2013-07-03 5 views
9

मैं इस ढांचे के बारे में कुछ सीखने के लिए लार्वेल में वास्तव में एक सरल सीआरयूडी बना रहा हूं। यह सब एक आकर्षण की तरह काम करता है लेकिन मैं एक नियंत्रक के अद्यतन कार्य ठीक से काम नहीं कर सकता।लार्वेल: फॉर्म मॉडल बाध्यकारी और संसाधन नियंत्रक त्रुटि

यहाँ मेरी स्थिति:

1) मैं कारीगर आदेश का उपयोग एक संसाधन नियंत्रक का निर्माण।

2) मैं ब्लेड का उपयोग कर एक फार्म के दृश्य का निर्माण और मैं इस कोड के साथ प्रपत्र खोलें:

<!-- Form --> 
@if($mode=="edit") 
    {{ Form::model($task, array('route'=>array('task.update',$task->id),'files'=>true)) }} 
@else 
    {{ Form::open(array('route'=>'task.store','files'=>true)) }} 
@endif 

यह बहुत अच्छा काम करता है और हर क्षेत्र सही डेटा के साथ भर रहे हैं। उत्पन्न फ़ॉर्म की ऐसी गतिविधि का यूआरएल है:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException 

किसी ने क्यों समझ सकते हैं:

http://localhost/mysite/task/2 

समस्या यह है कि जब मैं यह फ़ॉर्म सबमिट करेंगे मैं इस त्रुटि मिलती है? क्या मैं आपको अधिक जानकारी के साथ मदद कर सकता हूं?

उत्तर

9

आप 'विधि' => 'डाल' की जरूरत है।

{{ Form::model($task, array('route' => array('task.update', $task->id), 'files' => true, 'method' => 'PUT')) }}

आप यहाँ देख सकते हैं।

http://laravel.com/docs/controllers#resource-controllers

Verb:  PUT/PATCH 
Path:  /resource/{id} 
action: update 
route: resource.update 

संपादित करें: अपडेट लागू करने के लिए() - कार्रवाई आप एक PUT या पैच-अनुरोध मार्ग resource.update लिए, भेजना होगा अपने मामले task.update में।

0

आपको फॉर्म एक्शन के साथ कोई समस्या है। आप यह मानते हुए है इस तरह एक मार्ग:

Route::post('task/update/{id}, function() 
{ 

}); 

फिर, अपने मॉडल बाध्य प्रपत्र होना चाहिए:

{{ Form::model($task, array('url'=>array('task/update',$task->id),'files'=>true)) }} 
0

आपके कोड में एकमात्र त्रुटि यह है कि आपने सर्वर पर आपके फॉर्म जमा करने के लिए HTTP विधि के रूप में पुटर पैच को पास नहीं किया है।

सिम्फनी \ घटक \ Http कर्नेल \ अपवाद \ MethodNotAllowedHttpException ऐसे राज्यों पर ट्रिगर किया गया है।

एक डेमो मॉडल प्रपत्र

Form::model($name_model, array('action' => array('[email protected]', $argument), 'files' => true, 'method' => 'PUT')) 

के रूप में या

Form::model($name_model, array('route' => array('route.name', $argument), 'files' => true, 'method' => 'PUT')) 
के रूप में मार्ग नाम वाला हो जाएगा
संबंधित मुद्दे