मैं लारवेल में अपने तरीके बदलने की कोशिश कर रहा हूं, लेकिन मुझे यह काफी निराशाजनक लगता है

आम तौर पर, एक नियंत्रक में मैं कुछ इस तरह लिखूंगा

public function edit($id) {
    $question = Question::findOrFail($id);
    return view('question.edit', compact('question');
}

यह स्पष्ट रूप से काम करता है। HTML में इसे कॉल करने वाला मार्ग {{ route('question.edit', $question->id) }} है। जब आप नियंत्रक बनाते हैं तो अब मैं कारीगर द्वारा लिखी गई विधि का उपयोग करना चाहता हूं। यदि मैं करता हूँ:

public function edit(Question $question) {
    return view('question.edit', compact('question');
}

यह काम नहीं करता है (बेशक मैं ब्लेड निर्देश को {{ route('question.edit', $question) }} में बदल रहा हूं), यह हमेशा एक खाली Question मॉडल पास करता है, इसमें आईडी या कोई अन्य फ़ील्ड नहीं है जो पहुंच योग्य थे ब्लेड फ़ाइल में। अगर मैं ब्लेड फ़ाइल में dd() करता हूं, तो यह सही मॉडल दिखाएगा, जब नियंत्रक को पास किया जाएगा तो खाली है।

मैं क्या गलत कर रहा हूं?

0
luisfer 26 सितंबर 2020, 22:08

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप लागू मॉडल बाइंडिंग को काम करना चाहते हैं, तो आपको अपने प्रकार के संकेतित चर नाम को मार्ग पैरामीटर के नाम से मिलाना होगा, अन्यथा आप केवल एक निर्भरता के लिए पूछ रहे हैं और यह उस मॉडल के एक नए उदाहरण को इंजेक्ट करेगा:

//                    vvvvvvvv
Route::get('question/{question}/edit', 'YourController@edit');

//                             vvvvvvvv
public function edit(Question $question)
2
lagbox 26 सितंबर 2020, 22:24