Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4.2继续布线_Php_Laravel_Laravel 4_Laravel 4.2 - Fatal编程技术网

Php Laravel 4.2继续布线

Php Laravel 4.2继续布线,php,laravel,laravel-4,laravel-4.2,Php,Laravel,Laravel 4,Laravel 4.2,假设存在以下url结构: someurl.axyz/{post-slug} someurl.axyz/{page-slug} post slug和page slug存储在唯一数据库表列中。使用Laravel 4.2处理路线的“最”优雅方式是什么(如果与Laravel v5.2存在差异,则使用该方式) 我使用绑定参数解决了这个问题。下面的代码位于routes.php文件的底部。我想知道这项任务是否有更简单的解决方案 Route::bind('directslug', function($valu

假设存在以下url结构:

someurl.axyz/{post-slug}
someurl.axyz/{page-slug}
post slug
page slug
存储在唯一数据库表列中。使用Laravel 4.2处理路线的“最”优雅方式是什么(如果与Laravel v5.2存在差异,则使用该方式)

我使用绑定参数解决了这个问题。下面的代码位于routes.php文件的底部。我想知道这项任务是否有更简单的解决方案

Route::bind('directslug', function($value, $route) {
    $post = Post::where('slug', $value)->first();
    if ($post) {
        return $post;
    }
    $page = Page::where('slug', $value)->first();
    if ($page) {
        return $page;
    }

    throw new NotFoundHttpException;
});
Route::get('{directslug}', function(Post $post) {
    return $post;
});
Route::get('{directslug}', function(Page $page) {
    return $page;
});

App::missing(function($exception) {
    return Response::view('error.missing', array('title' => '404 Page not Found'), 404);
});
我会处理一切,和你的解决方案非常相似

在我看来,你应该为每一条路线保留一个单独的模型,否则你最终可能会得到一篇具有相同页面的文章。。。即使我确信你已经处理好了。毕竟你使用了两种不同的途径,如果有人在找一个页面,为什么你总是要查询帖子呢?

我处理所有事情的方法与你的解决方案非常相似


在我看来,你应该为每一条路线保留一个单独的模型,否则你最终可能会得到一篇具有相同页面的文章。。。即使我确信你已经处理好了。毕竟,您使用了两种不同的路由,如果有人正在查找页面,为什么您总是要查询帖子?

对于4.2,您必须手动绑定参数,就像您所做的那样,并且5.2将其开箱即用。对于4.2,您必须手动绑定参数,就像您所做的那样,并且5.2将其开箱即用。