يقوم Laravel باسترداد المعلمة في مُنشئ الفصل [نسخة مكررة]

StackOverflow https://stackoverflow.com//questions/24000823

  •  20-12-2019
  •  | 
  •  

سؤال

هنا طريقي:

Route::controller('/app/{companyId}/', 'HomeController', array('before' => 'auth'));

كيف يمكنني استرداد وسيطة $companyId في __constructor لتجنب استعادتها بشكل منفصل في جميع أفعالي؟

هل كانت مفيدة؟

المحلول

إذا كنت ترغب في الحصول على المعلمات في __construct وحدة التحكم الخاصة بك، فيمكنك القيام بذلك:

class HomeController extends \BaseController
{
    public function __construct()
    {
        $this->routeParamters = Route::current()->parameters();
    }
}

سيُرجع قائمة القيم الأساسية للمعلمات للمسار (على سبيل المثال: ['companyId' => '1']) @ راجع \Illuminate outing oute

يمكنك أيضًا الحصول على معلمة محددة باستخدام الحصول على المعلمة () أو معامل() طُرق.

ملحوظة: لست متأكدًا من أن هذه فكرة رائعة.قد تكون هناك طريقة أكثر أناقة لحل مشكلتك أو نهج أفضل لها.

نصائح أخرى

إذا كنت تريد جعل العملية أكثر بساطة، فيبدو أن ربط نموذج المسار هو أسهل طريقة.بدلاً من الاضطرار إلى جلب مثيل النموذج الصحيح في كل إجراء تقوم به وحدة التحكم الخاصة بك، يمكنك تمرير النموذج الصحيح إلى وحدة التحكم الخاصة بك أثناء عملية التوجيه.

ولكن عليك استخدام Route::resource.في الطرق.php :

Route::bind('company', 'Company');
Route::resource('company', 'HomeController');

ثم لديك مثيل للفئة تم تمريره إلى وحدة التحكم الخاصة بك.على سبيل المثال لـ /company/1 :

public function show($company)
{
    // Here you can use, for instance, $company->name
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top