2013-06-27 8 views
5

मुझे लैरवेल 4 में मेरे रूपों के साथ कुछ अजीब व्यवहार हो रहा है। मेरे पास दो रूपों वाला एक "सेटिंग" पृष्ठ है, प्रत्येक नियंत्रक विधि में प्रत्येक पोस्ट (माना जाता है), डेटाबेस अपडेट करें और सेटिंग पृष्ठ पर वापस लौटें। हालांकि, ऐसा लगता है कि मेरे फॉर्म काम कर रहे हैं या मेरे मार्ग किस तरह से एक मुद्दा है।लार्वेल 4 - एक ही पृष्ठ पर एकाधिक रूप?

यहाँ है कि यह कैसे सरल:

सेटिंग्स पृष्ठ: (site.com/settings)

<div id="form-one" class="form-area"> 

{{ Form::open(array('action' => 'Sett[email protected]')) }} 
    {{ Form::text('optionvalue', 'Default')) }} 
    {{ Form::submit('Save Changes') }} 
{{ Form::close() }} 

</div> 

<div id="form-two" class="form-area"> 

{{ Form::open(array('action' => '[email protected]')) }} 
    {{ Form::text('pagevalue', 'Default')) }} 
    {{ Form::submit('Save Changes') }} 
{{ Form::close() }} 

</div> 

तो बुनियादी तौर पर, एक ही पृष्ठ पर दो अलग रूपों है कि दो अलग तरीकों पर पोस्ट एक ही नियंत्रक - जब विधि सफल होती है, तो यह उन्हें "सेटिंग्स" पर रीडायरेक्ट करता है। के बाद से उन्हें परीक्षण किया मैं तरीकों पोस्ट नहीं होगा, और वे काम करते हैं, मेरा मानना ​​है कि समस्या मार्गों फ़ाइल में है:

routes.php

// Checks if a session is active 
Route::group(array('before' => 'require_login'), function() 
{ 
    Route::group(array('prefix' => 'settings'), function() 
    { 
     Route::get('/', '[email protected]'); 
     Route::post('/', '[email protected]'); 
     Route::post('/', '[email protected]'); 

    }); 
}); 

अब मैं यकीन है कि यह पसंद नहीं करता हूँ दो POST मार्ग इस तरह होने के बावजूद, मैं इसे करने का एक और तरीका नहीं सोच सकता, क्योंकि फॉर्म एक ही पृष्ठ पर हैं। मुझे त्रुटि मिलती है:

Unknown action [[email protected]]. 

चूंकि विकल्प प्रपत्र सबसे पहले मुझे लगता है। अगर मैं ओपन फॉर्म ब्लेड कोड (दोनों के लिए) लेता हूं, तो यह पृष्ठ लोड करता है - लेकिन जाहिर है कि फॉर्म कुछ भी नहीं करता है।

कोई मदद अच्छी होगी! अग्रिम में धन्यवाद।

उत्तर

2

आप विभिन्न कार्यों के लिए दो समान मार्ग नहीं जोड़ सकते हैं, क्योंकि उन्हें पहले मिलान किए गए मार्ग और आपके मामले में [email protected] पर भेज दिया जाएगा। करने के लिए अपने मार्गों बदलें:

Route::post('/option', '[email protected]'); 
    Route::post('/page', '[email protected]'); 

से दोनों कार्यों में आप '/' रीडायरेक्ट कर सकते हैं: return Redirect::back(), और यदि त्रुटि हो गई थी:

if ($validation->fails()) 
{ 
    return Redirect::to('/settings')->with_errors($validation); 
} 
0

इस के लिए मेरे वैकल्पिक समाधान एक छिपा एचटीएमएल बनाने के लिए है प्रत्येक रूप में इनपुट और नियंत्रक को इस क्षेत्र के आधार पर सबमिट किए जाने के लिए पहचानें। तो, आप दोनों के लिए सिर्फ एक मार्ग का उपयोग कर सकते हैं।

संबंधित मुद्दे