php - Laravel 路由到错误的 View

标签 php laravel laravel-routing

我正在使用 Laravel 4.2。我有一个应用程序路由到错误的 View ,尽管 URL 是正确的。单击按钮时,它应该路由到 users.create (UsersController@create),但实际上路由到 UsersController@show。不过,解析的 URL 是正确的,并且 DOM 元素列出了正确的 URL。谁能帮帮我吗?

这是我的路线文件:

// Home page
Route::get('/', 'BaseController@index');

// Define User model to pass through routes
Route::model('user', 'User');

// Create custom route for editing a user
Route::get('users/edit/{user}', 
    array('as' => 'users.edit', 'uses' => 'UsersController@edit'));

// Create custom route for showing a user
Route::get('users/{user}',
    ['as' => 'users.show', 'uses' => 'UsersController@show']);

// Remaining routes
Route::resource('users', 'UsersController', 
    array('except' => array('edit', 'show')));

这是我的 UsersController ,其中包含有问题的两个函数:

class UsersController extends \BaseController {

protected $user;

public function create()
{
    return View::make('users/create');
}

public function show($user)
{   
    return View::make('users/show', ['user' => $user]);
}}

以下是来自 php artisan paths 的相关结果:

GET:HEAD    users/{user}    users.show      UsersController@show
GET:HEAD    users/create    users.create    UsersController@create

感谢您的帮助!

编辑: 问题的答案是简单地重新排序路由,以便首先定义资源。我知道 Laravel 会获取与 URI 匹配的第一个路由,但我仍然不明白为什么未传递用户对象的路由会选择定义为 users/{user} 的路由。此外,我通过 link_to_route() 访问路线,也就是说,通过名称访问路线。为什么 Laravel 会选择与我明确指定的路线不同的路线?

我想这些问题超出了最初问题的范围,但我非常感谢有人提供进一步的解释。问题解决了!

最佳答案

我首先想到的是没有“创建”的路线。有“restful” Controller ,但也许您只想尝试将路由放入。在提供 html 时使用 Restful 路由我有点不舒服。在我正在从事的项目中,我一直在尝试保留这些数据/json 传输,以支持外部 api 操作。

关于php - Laravel 路由到错误的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27791246/

相关文章:

php - 使用 jQuery 和 Ajax 的远程 POST 请求

javascript - 我无法获取搜索页面中的特定 URL

Laravel 和 redis 扫描

php - 表中不存在资源时如何重新路由到另一个 View (Laravel 4)

.htaccess - 在 Laravel 5 项目上应用 SSL 后所有路由上的 404

javascript - 使用 jQuery/AJAX 获取并显示 PHP 结果

PHP array_key_exists() 和 SPL ArrayAccess 接口(interface) : not compatible?

php - SQLquery 和 PHP 中的数组到字符串转换

Laravel 4 DatabaseSeed.php 抛出找不到类

laravel - Laravel 中的可填充和守卫有什么区别?