【问题标题】:Laravel 4 Use/get the route name in my controllerLaravel 4 在我的控制器中使用/获取路由名称
【发布时间】:2013-12-30 14:39:29
【问题描述】:

我刚开始学习 Laravel,但我似乎无法完成任何事情。因为我是初学者,我不知道在哪里搜索。但这就是想法:

  • 我的 CMS 页面有一个控制器。
  • 我有一个现有的数据库,其内容包含字段 ID - 标题 - 别名
  • “别名”用于构建 URL(例如:http://site.tld/about-us),我在路由中这样使用它:

    Route::get('about-us', array('uses' => 'CmsController@showByAlias'));
    Route::get('article-1-title', array('uses' => 'CmsController@showByAlias'));
    

我可以让一切都以简单的方式工作,但我需要让事情更有活力。我想知道的是:如何使用路线标题(即“about-us”或“article-1-title”)从数据库中获取 Id?

【问题讨论】:

    标签: laravel laravel-routing


    【解决方案1】:

    您需要在 Laravel 中使用可选参数路由,如Laravel documentation 中所述。

    将以下内容添加到您的routes.php。这将处理除索引页面之外的任何其他 URL。如果您需要任何其他静态 URL,请在此行之前添加它们。

    Route::get('/{alias}', array('uses' => 'CmsController@showByAlias'));
    

    现在您需要定义将处理路由的控制器。可能是这样的:

    class CmsController extends BaseController {
    
      public function showByAlias($alias)
        {
        $content = Cms::findByAlias($alias);
        return View::make('cms.show')->with('content', $content)->with('title',$title);
        }
    

    您仍然需要在模型中编写一个函数,例如Cms::findByAlias,以从数据库中检索和处理正确的内容。当然,您可以在控制器本身内执行此操作。

    另请注意,您需要添加错误处理,以防在 URL 中传递无效别名。例如。在这种情况下显示 404 错误页面。

    只是一个提示:我在我的 Laravel 应用程序中做着非常相似的事情。我以 markdown 格式存储所有 CMS 内容,并使用 Parsedown 在 Laravel 中将其转换为 HTML,然后将其传递给视图。完全符合我的需要。

    【讨论】:

    • Laravel 完全颠覆了我的习惯。这是我使用过的第一个框架。所有东西都被理解和工作(路由、控制器、模型和错误处理)。非常感谢!
    【解决方案2】:

    您可以使用路由模型绑定。

    例如:

    // 假设你有posts 表并且你有一个Post 模型。

    Route::bind('post', function($value, $route) {
        return Post::whereTitle($value)->firstOrFail();
    });
    
    
    Route::get('article/{post}', array('uses' => 'CmsController@showByAlias'));
    

    在您的控制器中:

    Public function showByAlias(Post $post) 
    {
      dd($post->id);
    }
    

    参考:

    http://laravel.com/docs/routing#route-model-binding

    【讨论】:

      猜你喜欢
      • 2018-12-24
      • 2019-07-23
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多