2015-10-27 6 views
0

У меня есть следующие маршруты:Laravel маршрута Модель Связывание маршрута :: контроллер()

Route::controllers([ 
    'auth' => 'Auth\AuthController', 
    'password' => 'Auth\PasswordController', 
    'admin' => 'AdminController', 
    'site' => 'SiteController' 
]); 

А потом у меня есть следующий метод в SiteController:

/** 
* Get site details and pass to view 
* 
* @param Site $site 
* @return mixed 
* @internal param $site_id 
*/ 
public function getDetails(Site $site) 
{ 
    return $site; 
} 

Когда Я перехожу к URL site.com/site/details/13, он не возвращает объект сайта.

Я добавил $router->model('one', 'App\Site'); в RouteServiceProvider, и она работает, но что, если позже вниз по дороге я хочу добавить еще один контроллер, как это, но использовать его для jobs, и использовать метод getDetails снова и пройти через App\Job объект? Затем он автоматически отправит модель App\Site.

Так есть способ, которым я могу предотвратить это?

ответ

1

Мои ограниченные знания Laravel говорят мне, что у вас не может быть модель/объект в качестве параметра в ваших функциях контроллера маршрута, и для этого вам не нужно что-то вроде $router->model('one', 'App\Site');.

Я предполагаю, что вы хотите сделать что-то вроде этого:

Что касается ваших маршрутов:

Route::controllers([ 
    'auth' => 'Auth\AuthController', 
    'password' => 'Auth\PasswordController', 
    'admin' => 'AdminController', 
    'site' => 'SiteController', 
    'jobs' => 'JobController', 
]); 

В вашем SiteController:

use Illuminate\Http\Request; 
use App/Site; //replace with namespace of model  

public function getDetails($id) 
{ 
    //code for fetching the site object, depends on how your structure is, 
    //like $site = App\Site::find($id); etc 

    return $site; 
} 

Точно так же, ваш JobController будет что-то вроде:

use Illuminate\Http\Request; 
use App/Job; //replace with namespace of model  

public function getDetails($id) 
{ 
    //code for fetching the job object, depends on how your structure is, 
    //like $job = App\Job::find($id); etc 

    return $job; 
} 

Посмотрите здесь: Laravel Docs - Implicit Controllers

+0

Я пытаюсь предотвратить часть параметра '$ id'. В этом весь смысл привязки модели маршрута. Однако я ценю ваш ответ. – tomirons

Смежные вопросы