我正在尝试从一个模板“tuning.blade.php”生成路线
我有一个250行的数据库我想用一个路由或一个控制器动态创建250个路由。
我希望能够使用这些网址
laravel.dev/tuning/(field from DB row 1)
laravel.dev/tuning/(field from DB row 2 and so on)
我想将数据库请求放在tuning.blade.php中,以便此模板可以使用250个不同的URL显示所有250行
我尝试使用Laravel Docs中的第一个示例
class UserController extends BaseController {
/**
* Show the profile for the given user.
*/
public function showProfile($id)
{
$user = User::find($id);
return View::make('user.profile', array('user' => $user));
}
}
Route::get('user/{id}', 'UserController@showProfile');
我还从http://forumsarchive.laravel.io/viewtopic.php?id=9010获得了一些有趣的搜索结果 但是,我总是最终得到一个未发现的例外
但我不确定在我的调整模板中放置什么以显示任何内容。我的Tuning模板位于app / views / home / tuning.blade.php
中目前我收到错误“Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException”
有人能把我放在正确的方向,我可以找到一个资源来帮助我理解吗?
答案 0 :(得分:2)
您说您希望能够使用这些URL
s:
laravel.dev/tuning/(field from DB row 1)
laravel.dev/tuning/(field from DB row 2 and so on)
您可以通过声明如下路线来完成此操作:
Route::any('/tuning/{field}', 'TuningController@someMethod'); you may get/post
您不应该从view
运行SQL查询,如果您想真正为数据库中的每个字段声明一些动态路由,那么您可以直接从routes.php
文件中执行id,例如,假设您有一个名为tunings
的表,该表包含一些字段,包括id
,name
和其他一些字段。现在,要使用表tuning
的{{1}}字段动态地为每个路由声明路由,您可以在tunings
中创建一个方法,如下所示:
TuningController
现在在class TuningController extends baseController {
// other methods...
public function registerTuningRoutes()
{
$tunings = Tuning::all(); // Assume that you have a model Tuning
// Or you may use this instead
$tunings = DB::table('tuning')->get();
// Now loop all tunings and declare routes
foreach($tunings as $tuning) {
$url = '/tuning/' . $tuning->name;
$route_name = 'tuning.' . $tuning->name;
Route::any($url, $route_name); // You may use get/post
}
}
public function TuningMethod($tuning = null)
{
// $tuning will contain the current tuning name, check
dd($tuning);
}
}
文件中使用以下内容:
routes.php
在终端/命令提示符下,通过运行以下命令检查路由:
Registers route for each tuning name in database
App::make('TuningController')->registerTuningRoutes();
但是,我认为,你不需要这样做,只有一条路线足够我在前面的回答中提到过。