简体   繁体   English

Laravel路线不再起作用

[英]Laravel routes not working anymore

I'm learning Laravel, and I'm busy building a site (framework version 5.1.34). 我正在学习Laravel,并且正忙于建立一个网站(框架版本5.1.34)。 I installed Homestead in September last year, initially on Windows 7 and then upgraded to Windows 10. Everything was working fine on Windows 7 and later on Windows 10 also (I had some issues on Windows 10 which I managed to sort out), but then my routes started acting strange recently. 去年9月,我首先在Windows 7上安装了Homestead,然后又升级到Windows10。在Windows 7上,然后在Windows 10上,一切都运行良好(我在Windows 10上遇到了一些问题,设法解决了)。我的路线最近开始表现奇怪。 All of my routes still work, except the one now comes up with a 404 error. 我的所有路线仍然有效,除了一条路线现在出现404错误。 The route is: 路线是:

Route::get('projects/{project}/nodes/{node}/tasks/create', 
['uses' => 'TaskController@taskCreateShow']);

The controller function is: 控制器功能为:

public function taskCreateShow(Project $project, Node $node){
    return view('tasks.create')
            ->with('project',$project)
            ->with('user',$this->user)
            ->with('node',$node)
            ->with('all_projects',$this->all_projects);
} // taskCreateShow

If I run php artisan route:list the route still shows up like all the other routes. 如果我运行php artisan route:list该路由仍会像其他所有路由一样显示。 I can add new routes, which also work fine. 我可以添加新路线,也可以正常运行。 The model binding is defined in the RouteServiceProvider.php class in the boot function: 模型绑定在启动功能的RouteServiceProvider.php类中定义:

public function boot(Router $router)
{
    parent::boot($router);

    // Route model binding

    $router->model('project', 'resolved7\Project');
    $router->model('user', 'resolved7\User');
    $router->model('node', 'resolved7\Node');
    $router->model('task', 'resolved7\Task');
    $router->model('io', 'resolved7\Io');
}

The only way I've been able to get this to work, is to change the route to: 我能够做到这一点的唯一方法是将路线更改为:

Route::get('projects_1/{project}/nodes/{node}/tasks/create', 
['uses' => 'TaskController@taskCreateShow']);

I've looked at the .htaccess file, and it seems fine. 我已经查看了.htaccess文件,看起来还不错。 Does anyone perhaps know what could cause this to happen? 有人知道什么可能导致这种情况发生吗? I appreciate any help or suggestions. 感谢您的帮助或建议。 Thanks. 谢谢。


*edit: here is the routes.php file: *编辑:这是routes.php文件:

<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
*/

/*=========================================================================
 * General routes
 */

Route::get('/', function(){
    return redirect('index');
});

Route::get('dashboard', function(){
   return 'dashboard';     
});

Route::get('about', function(){
    return view('about')->with('company_name', 'The Resolved 7<sup>th</sup>');
});

Route::get('index', function(){
    return view('index');
});

// Route used to get images from non-public folder
Route::get('images/{filename}', function ($filename)
{
    $path = storage_path() . '/profilepics/' . $filename;

    $file = File::get($path);
    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
});

/* =========================================================================
 * Project specific routes
 * Use controller to re-use construct functions
 */

// Project specific dashboard
Route::get('projects/{project}', ['uses' => 'ProjectController@projectDashboard'])
->where('project','[0-9]+');

// Page from which to create new project
Route::get('projects/create', ['uses' => 'ProjectController@projectCreateShow']);

// Create a new project through post method
Route::post('projects', ['uses' => 'ProjectController@projectCreate']);

// Page from which to edit projects
Route::get('projects/{project}/edit', ['uses' => 'ProjectController@projectEditShow']);

// Update an existing project through put method
Route::put('projects/{project}', ['uses' => 'ProjectController@projectEdit']);

// Page from which a project deletion is confirmed
Route::get('projects/{project}/delete', ['uses' => 'ProjectController@projectDeleteShow']);

// Delete project
Route::delete('projects/{project}', ['uses' => 'ProjectController@projectDelete']);

// Page to show project details
Route::get('projects/{project}/detail', ['uses' => 'ProjectController@projectDetail']);

// Page from which to select users to add as members
Route::get('projects/{project}/members/invite', ['uses' => 'ProjectController@projectAddMembersShow']);

/* =========================================================================
 * User specific routes
 */

// Page to test user
Route::get('users/{user}/test', ['middleware' => 'auth',
'uses' => 'UserController@test']);

// Page to show user
Route::get('users/{user}', ['middleware' => 'auth',
'uses' => 'UserController@show']);

// Page from which to edit user
Route::get('users/{user}/edit', ['middleware' => 'auth', 
'uses' => 'UserController@showUserEdit']);

// Update an existing user through put method
Route::put('users/{user}', ['middleware' => 'auth',
'uses' => 'UserController@userEdit']);

/* =========================================================================
 * Node specific routes
 */

// Page from which to view node
Route::get('projects/{project}/nodes/{node}', 
['uses' => 'NodeController@nodeShow']);

// Page from which to create new node
Route::get('projects/{project}/nodes/create', 
['uses' => 'NodeController@nodeCreateShow']);

// Create a new node through post method
Route::post('projects/{project}/nodes', 
['uses' => 'NodeController@nodeCreate']);

// Page from which to edit nodes
Route::get('projects/{project}/nodes/{node}/edit', 
    ['uses' => 'NodeController@nodeEditShow']);

// Update an existing node through put method
Route::put('projects/{project}/nodes/{node}', 
['uses' => 'NodeController@nodeEdit']);

// Page from which a node deletion is confirmed
Route::get('projects/{project}/nodes/{node}/delete',['uses' => 'NodeController@nodeDeleteShow']);

// Delete node
Route::delete('projects/{project}/nodes/{node}', ['uses' => 'NodeController@nodeDelete']);

// Page from which a user is selected to be added to a node
Route::get('/projects/{project}/nodes/{node}/members/add', 
['uses' => 'NodeController@nodeAddMember']);

// Add existing project member user to specific project node
Route::post('/projects/{project}/nodes/{node}/members/add', 
['uses' => 'NodeController@nodeAddExistingMember']);

// Page to confirm node member removal
Route::get('/projects/{project}/nodes/{node}/members/{user}/remove', 
['uses' => 'NodeController@nodeRemoveMemberShow']);

// Remove node member user from a specific project node
Route::post('/projects/{project}/nodes/{node}/members/{user}/remove', 
['uses' => 'NodeController@nodeRemoveMember']);

/* =========================================================================
 * Task specific routes
 */

// Page from which to view task
Route::get('projects/{project}/nodes/{node}/tasks/{task}', 
['uses' => 'TaskController@show']);

// Page from which to create new task
// return 'dashboard' is a test.
Route::get('/projects/{project}/nodes/{node}/tasks/create', function(){
   return 'dashboard';     
});
/*Route::get('/projects/{project}/nodes/{node}/tasks/create', 
    ['uses' => 'TaskController@taskCreateShow']);*/

// Create a new task through post method
Route::post('/projects/{project}/nodes/{node}/tasks', 
['uses' => 'TaskController@taskCreate']);

// Page from which a task deletion is confirmed
Route::get('projects/{project}/nodes/{node}/tasks/{task}/delete',
['uses' => 'TaskController@taskDeleteShow']);

// Delete task 
Route::delete('projects/{project}/nodes/{node}/tasks/{task}', 
['uses' => 'TaskController@taskDelete']);


/* =========================================================================
 * Io specific routes
 */

// Page from which to create new io
Route::get('/projects/{project}/nodes/{node}/tasks/{task}/ios/create', 
['uses' => 'IoController@ioCreateShow']);

// Create a new io through post method
Route::post('/projects/{project}/nodes/{node}/tasks/{task}/ios/', 
['uses' => 'IoController@ioCreate']);

// Page from which an io deletion is confirmed
Route::get('projects/{project}/ios/{io}/delete',
['uses' => 'IoController@ioDeleteShow']);

// Delete io
Route::delete('projects/{project}/ios/{io}', 
['uses' => 'IoController@ioDelete']);


/* =========================================================================
 * User authentication controllers
 */

Route::controllers([
    'auth' => 'Auth\AuthController',
    'password' => 'Auth\PasswordController',
]);

/* =========================================================================
 * Community
 */

Route::get('/community', ['uses' => 'UserController@community']);

/* Testing routes
 * 
 * =========================================================================
 * 
 */

// Page from which to test project
Route::get('projects/{project}/test', ['uses' => 'ProjectController@test']);

Thanks guys, I missed a route that was indeed taking precedence as mentioned in the comments. 谢谢大家,我错过了一条评论中提到的确实优先的路线。 I changed the route from: 我将路线从:

Route::get('projects/{project}/nodes/{node}/tasks/{task}', 
['uses' => 'TaskController@show']);

to: 至:

Route::get('projects/{project}/nodes/{node}/tasks/{task}', 
['uses' => 'TaskController@show'])
    ->where('project','[0-9]+')
    ->where('node','[0-9]+')
    ->where('task','[0-9]+');

All is working well again. 一切再次恢复正常。 I'll perhaps change some of the other routes also to make them more robust. 我也许还会更改其他一些路线,以使其更加坚固。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM