imp*_*335 16 php laravel laravel-4 laravel-routing
如何将硬编码变量传递给控制器?
我的路线是:
Route::group(array('prefix' => $locale), function() {
Route::get('/milk', array('as' => 'milk', 'uses' => 'ProductsController@index'));
});
Run Code Online (Sandbox Code Playgroud)
我想做的事情如下:
Route::get('/milk', array('as' => 'milk', 'uses' => 'ProductsController@index(1)'));
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
如何才能做到这一点?
对不起,如果我没有解释清楚.
我希望简单地硬编码(由我设置)某些路由的type_id,如下所示:
Route::get('/milk', array('as' => 'milk', 'uses' => 'ProductsController@index(1)'));
Route::get('/cheese', array('as' => 'cheese', 'uses' => 'ProductsController@index(2)'));
...
Run Code Online (Sandbox Code Playgroud)
我的产品控制器供参考:
class ProductsController extends BaseController {
public function index($type_id) {
$Products = new Products;
$products = $Products->where('type_id', $type_id)->get();
return View::make('products.products', array('products' => $products));
}
}
Run Code Online (Sandbox Code Playgroud)
luk*_*ter 25
您可以为路由使用闭包,然后调用控制器操作:
Route::get('/milk', array('as' => 'milk', function(){
return App::make('ProductsController')->index(1);
}));
Run Code Online (Sandbox Code Playgroud)
但是,更好的方法是使用where条件然后在控制器中进行type-to-id转换.您将丢失直接别名,并且在生成URL时必须将产品作为参数传递.
Route::get('{product}', array('as' => 'product', 'uses' => 'ProductsController@index'))
->where('product', '(milk|cheese)');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37294 次 |
| 最近记录: |