Laravel recupera parámetros en el constructor de clases [duplicado]
Pregunta
Aquí está mi ruta:
Route::controller('/app/{companyId}/', 'HomeController', array('before' => 'auth'));
¿Cómo puedo recuperar el argumento $companyId en __constructor para evitar recuperarlo por separado en todas mis acciones?
Solución
Si desea obtener los parámetros en el __construct de su controlador, puede hacer esto:
class HomeController extends \BaseController
{
public function __construct()
{
$this->routeParamters = Route::current()->parameters();
}
}
devolverá una lista de valores clave de parámetros para la ruta (por ejemplo: ['companyId' => '1']
) @ver \Illuminate\Enrutamiento
uta
También puede obtener un parámetro específico usando el obtener parámetro() o parámetro() métodos.
NOTA: Aunque no estoy seguro de que sea una gran idea.Puede que haya una forma más elegante de resolver o abordar mejor su problema.
Otros consejos
Si desea simplificar el proceso, la vinculación del modelo de ruta parece ser la forma más sencilla de hacerlo.En lugar de tener que buscar la instancia del Modelo correcto en cada acción de su controlador, pasa el Modelo correcto a su controlador durante el proceso de enrutamiento.
Pero tienes que usar Route::resource.En rutas.php:
Route::bind('company', 'Company');
Route::resource('company', 'HomeController');
Luego tiene una instancia de categoría pasada a su controlador.Por ejemplo para /empresa/1 :
public function show($company)
{
// Here you can use, for instance, $company->name
}