Laravel 4 在我的 Controller 中使用/获取路由名称

标签 laravel laravel-routing

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

  • 我的 CMS 页面有一个 Controller 。
  • 我有一个现有数据库,其内容包含字段 Id - Title - Alias
  • “别名”用于构建 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 documentation 中所述。 .

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

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

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

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,以从数据库中检索和处理正确的内容。当然,您可以在 Controller 本身内执行此操作。

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

提示:我在 Laravel 应用程序中做了非常类似的事情。我以 markdown 格式存储所有 CMS 内容,并使用 Parsedown 将其转换为 Laravel 中的 HTML ,然后将其传递给 View 。非常适合我的需求。

关于Laravel 4 在我的 Controller 中使用/获取路由名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20539208/

相关文章:

laravel - 无法从 dist : The "https://api. github.com/repos/laravel/spark-aurelius/zipball 下载 laravel/spark-aurelius

laravel - 如何在 Blade 模板中包含 subview ?

php - Laravel 5.1 路由不工作,除了 '/'

laravel - 推荐的 Laravel 模型关系路由结构

php - 在 Laravel 中将固定变量从路由传递到 Controller

php - Laravel 5缓存路由未更新

php - 如何在 CI 和 Laravel 之间设置路由

laravel - Laravels 的 DD 辅助功能是否正常工作?

angularjs - 如何使用 AngularJS 在 Laravel 4 中保护 API 访问

android - 某些设备上不显示图像(使用 Quasar 框架)