控制器操作不可用

Controller action is not available

我不熟悉 laravel 但是根据我的红色我做了这个: 我的控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ChatController extends Controller
{
    public function index(Request $request)
    {
        var_dump(123123);die;
        if (!Auth::check()) {
            return redirect('/');
        }

        return 1;
    }
}

现在我正尝试像 domain.com/open-chat 那样请求它。我的 web.php 配置是:

Route::get('/open-chat', 'ChatController@index');

但是我被重定向到主页。我检查了中间件控制器是否其中一些重定向了我但没有。其他控制器(我来的时候已经做好了)工作正常。我错过了什么?

编辑 web.php

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/clear-cache', function() {
    Artisan::call('cache:clear');
    return "Cache is cleared";
});
Route::get('/config-cache', function() {
    Artisan::call('config:cache');
    return "Config is cleared";
});

Route::get('/view', function() {
    Artisan::call('view:clear');
    return "View is cleared";
});

/* Route::get('/', function () {
    return view('welcome');
}); */

Route::group(['prefix' => 'siteadmin', 'namespace' => 'Admin'], function () {

    Route::get('/', 'Auth\LoginController@showLoginForm');
    Route::post('login', 'Auth\LoginController@login')->name('admin.login');
    Route::post('logout', 'Auth\LoginController@logout')->name('admin.logout');
});

Route::group(['prefix'=>'siteadmin', 'namespace' => 'Admin','middleware' => 'auth'], function () {  
    Route::get('/dashboard', 'DashboardController@index')->name('dashboard.index');
    Route::get('/edit-profile', 'CommonController@editProfile');
    Route::post('/updateprofile', 'CommonController@updateprofile');

    /**
        Routes for site settings
    **/
    Route::get('/site-settings', 'SiteSettingController@index')->name('sitesettings.index');
    Route::post('/site-settings/store', 'SiteSettingController@store')->name('sitesettings.save');


    Route::get('/subject-categories', 'SubjectCategoriesController@index')->name('subject-categories.index');
    Route::get('/subject-categories/create', 'SubjectCategoriesController@create')->name('subject-categories.create');
    Route::post('/subject-categories/store', 'SubjectCategoriesController@store')->name('subject-categories.store');
    Route::get('/subject-categories/edit/{id}', 'SubjectCategoriesController@edit')->name('subject-categories.edit');
    Route::post('/subject-categories/update/{id}', 'SubjectCategoriesController@update')->name('subject-categories.update');
    Route::get('/subject-categories/drop/{id}', 'SubjectCategoriesController@drop')->name('subject-categories.drop');
    Route::post('/subject-categories/delete-image/{id}', 'SubjectCategoriesController@deleteImage');


    /**
        Routes for teachers users
    **/
    Route::get('/users/teachers', ['middleware'=>'auth','uses'=>'UserController@getTeachersList'])->name('teachers.index');
    Route::get('/users/teachers/create', ['middleware'=>'auth','uses'=>'UserController@createTeacher'])->name('teachers.create');
    Route::post('/users/teachers/save', ['middleware'=>'auth','uses'=>'UserController@saveTeacher'])->name('teachers.save');
    Route::get('/users/teachers/edit/{id}', ['middleware'=>'auth','uses'=>'UserController@editTeacher'])->name('teachers.edit');
    Route::get('/users/teachers/show/{id}', ['middleware'=>'auth','uses'=>'UserController@showTeacher'])->name('teachers.show');
    Route::post('/users/teachers/update/{id}', ['middleware'=>'auth','uses'=>'UserController@updateTeacher'])->name('teachers.update');
    Route::get('/users/teachers/delete/{id}', ['middleware'=>'auth','uses'=>'UserController@deleteTeacher']);
    Route::get('/users/teachers/change-status/{id}', ['middleware'=>'auth','uses'=>'UserController@changeTeacherStatus']);
    Route::post('/users/get-cities-by-country', ['middleware'=>'auth','uses'=>'UserController@getCitiesByCountry']);
    Route::get('/users/teachers/messages/{id}', ['middleware'=>'auth','uses'=>'UserController@getTeacherMessageThreads'])->name('teachers.messages');
    Route::get('/users/teachers/view-message/{id}', ['middleware'=>'auth','uses'=>'UserController@getAllMessagesByThreadID'])->name('teacher.view-message');
    Route::post('/users/teachers/delete-profile-image/{id}', ['middleware'=>'auth','uses'=>'UserController@deleteTeacherProfileImage']);

    /**
        Routes for driver users
    **/
    Route::get('/users/students', ['middleware'=>'auth','uses'=>'UserController@getStudentsList'])->name('students.index');
    Route::get('/users/students/create', ['middleware'=>'auth','uses'=>'UserController@createStudent'])->name('students.create');
    Route::post('/users/students/save', ['middleware'=>'auth','uses'=>'UserController@saveStudent'])->name('students.save');
    Route::get('/users/students/edit/{id}', ['middleware'=>'auth','uses'=>'UserController@editStudent'])->name('students.edit');
    Route::get('/users/students/show/{id}', ['middleware'=>'auth','uses'=>'UserController@showStudent'])->name('students.show');
    Route::post('/users/students/update/{id}', ['middleware'=>'auth','uses'=>'UserController@updateStudent'])->name('students.update');
    Route::get('/users/students/delete/{id}', ['middleware'=>'auth','uses'=>'UserController@deleteStudent']);
    Route::get('/users/students/change-status/{id}', ['middleware'=>'auth','uses'=>'UserController@changeStudentStatus']);

    /**
        Routes for countries
    **/
    Route::get('/countries', ['middleware'=>'auth','uses'=>'CountryController@index'])->name('countries.index');
    Route::get('/countries/create', ['middleware'=>'auth','uses'=>'CountryController@create'])->name('countries.create');
    Route::post('/countries/save', ['middleware'=>'auth','uses'=>'CountryController@store'])->name('countries.save');
    Route::get('/countries/edit/{id}', ['middleware'=>'auth','uses'=>'CountryController@edit'])->name('countries.edit');
    Route::get('/countries/show/{id}', ['middleware'=>'auth','uses'=>'CountryController@show'])->name('countries.show');
    Route::post('/countries/update/{id}', ['middleware'=>'auth','uses'=>'CountryController@update'])->name('countries.update');
    Route::get('/countries/delete/{id}', ['middleware'=>'auth','uses'=>'CountryController@destroy']);
    Route::get('/countries/change-status/{id}', ['middleware'=>'auth','uses'=>'CountryController@changeStatus']);
    Route::post('/countries/delete-image/{id}', ['middleware'=>'auth','uses'=>'CountryController@deleteImage']);

    /**
        Routes for cities
    **/
    Route::get('/cities', ['middleware'=>'auth','uses'=>'CityController@index'])->name('cities.index');
    Route::get('/cities/create', ['middleware'=>'auth','uses'=>'CityController@create'])->name('cities.create');
    Route::post('/cities/save', ['middleware'=>'auth','uses'=>'CityController@store'])->name('cities.save');
    Route::get('/cities/edit/{id}', ['middleware'=>'auth','uses'=>'CityController@edit'])->name('cities.edit');
    Route::get('/cities/show/{id}', ['middleware'=>'auth','uses'=>'CityController@show'])->name('cities.show');
    Route::post('/cities/update/{id}', ['middleware'=>'auth','uses'=>'CityController@update'])->name('cities.update');
    Route::get('/cities/delete/{id}', ['middleware'=>'auth','uses'=>'CityController@destroy']);
    Route::get('/cities/change-status/{id}', ['middleware'=>'auth','uses'=>'CityController@changeStatus']);
    Route::post('/cities/delete-image/{id}', ['middleware'=>'auth','uses'=>'CityController@deleteImage']);

    /**
        Routes for subjects
    **/
    Route::get('/subjects', ['middleware'=>'auth','uses'=>'SubjectController@index'])->name('subjects.index');
    Route::get('/subjects/create', ['middleware'=>'auth','uses'=>'SubjectController@create'])->name('subjects.create');
    Route::post('/subjects/save', ['middleware'=>'auth','uses'=>'SubjectController@store'])->name('subjects.save');
    Route::get('/subjects/edit/{id}', ['middleware'=>'auth','uses'=>'SubjectController@edit'])->name('subjects.edit');
    Route::get('/subjects/show/{id}', ['middleware'=>'auth','uses'=>'SubjectController@show'])->name('subjects.show');
    Route::post('/subjects/update/{id}', ['middleware'=>'auth','uses'=>'SubjectController@update'])->name('subjects.update');
    Route::get('/subjects/delete/{id}', ['middleware'=>'auth','uses'=>'SubjectController@destroy']);
    Route::get('/subjects/change-status/{id}', ['middleware'=>'auth','uses'=>'SubjectController@changeStatus']);

    /**
        Routes for classes
    **/
    Route::get('/classes', ['middleware'=>'auth','uses'=>'ClassController@index'])->name('classes.index');
    Route::get('/classes/create', ['middleware'=>'auth','uses'=>'ClassController@create'])->name('classes.create');
    Route::post('/classes/save', ['middleware'=>'auth','uses'=>'ClassController@store'])->name('classes.save');
    Route::get('/classes/edit/{id}', ['middleware'=>'auth','uses'=>'ClassController@edit'])->name('classes.edit');
    Route::get('/classes/show/{id}', ['middleware'=>'auth','uses'=>'ClassController@show'])->name('classes.show');
    Route::post('/classes/update/{id}', ['middleware'=>'auth','uses'=>'ClassController@update'])->name('classes.update');
    Route::get('/classes/delete/{id}', ['middleware'=>'auth','uses'=>'ClassController@destroy']);
    Route::get('/classes/change-status/{id}', ['middleware'=>'auth','uses'=>'ClassController@changeStatus']);
    Route::post('/classes/get-subjects-by-category', ['middleware'=>'auth','uses'=>'ClassController@getSubjectsByCategory']);

    /**
        Routes for sliders
    **/

    Route::get('/sliders', 'SliderController@index')->name('sliders.index');
    Route::get('/sliders/create', 'SliderController@create')->name('sliders.create');
    Route::post('/sliders/store', 'SliderController@store')->name('sliders.save');
    Route::get('/sliders/edit/{id}', 'SliderController@edit')->name('sliders.edit');
    Route::post('/sliders/update/{id}', 'SliderController@update')->name('sliders.update');
    Route::get('/sliders/delete/{id}', 'SliderController@destroy')->name('sliders.delete');
    Route::get('/sliders/change-status/{id}', ['middleware'=>'auth','uses'=>'SliderController@changeStatus']);
    Route::post('/sliders/delete-image/{id}', 'SliderController@deleteImage');


    /**
        Routes for teacher classes
    **/

    Route::get('/teacher-classes', 'TeacherClassController@index')->name('teacher-classes.index');
    Route::get('/teacher-classes/create', 'TeacherClassController@create')->name('teacher-classes.create');
    Route::post('/teacher-classes/store', 'TeacherClassController@store')->name('teacher-classes.save');
    Route::get('/teacher-classes/edit/{id}', 'TeacherClassController@edit')->name('teacher-classes.edit');
    Route::post('/teacher-classes/update/{id}', 'TeacherClassController@update')->name('teacher-classes.update');
    Route::get('/teacher-classes/delete/{id}', 'TeacherClassController@destroy')->name('teacher-classes.delete');
    Route::post('/teacher-classes/get-subjects-by-category', 'TeacherClassController@getSubjectsByCategory');
    Route::post('/teacher-classes/get-classes-by-category-and-subject', 'TeacherClassController@getClassesBySubjectAndCategory');

    /**
        Routes for orders
    **/

    Route::get('/orders', 'OrderController@index')->name('orders.index');
    Route::get('/orders/show/{id}', 'OrderController@show')->name('orders.show');
    Route::get('/orders/export-orders', 'OrderController@exportOrders')->name('orders.export-orders');

    /**
        Routes for bookings
    **/

    Route::get('/bookings', 'BookingController@index')->name('bookings.index');
    Route::get('/bookings/teacher-bookings/{teacher_id}', 'BookingController@getTeacherAllBookings')->name('bookings.bookings');
    Route::get('/bookings/show/{id}', 'BookingController@show')->name('bookings.show');
    Route::get('/bookings/export-teacher-bookings/{teacher_id}', 'BookingController@exportTeacherBookings')->name('bookings.export-teacher-bookings');

    /**
        Routes for bookings
    **/

    Route::get('/messages', 'MessageController@index')->name('messages.index');
    Route::get('/messages/show/{id}', 'MessageController@show')->name('messages.show');

    /**
        Routes for reviews
    **/

    Route::get('/reviews', 'ReviewController@index')->name('reviews.index');
    Route::get('/reviews/show/{id}', 'ReviewController@show')->name('reviews.show');


    /**
        Routes for blogs
    **/

    Route::get('/blogs', 'BlogController@index')->name('blogs.index');
    Route::get('/blogs/create', 'BlogController@create')->name('blogs.create');
    Route::post('/blogs/store', 'BlogController@store')->name('blogs.save');
    Route::get('/blogs/edit/{id}', 'BlogController@edit')->name('blogs.edit');
    Route::post('/blogs/update/{id}', 'BlogController@update')->name('blogs.update');
    Route::get('/blogs/delete/{id}', 'BlogController@destroy')->name('blogs.delete');
    Route::get('/blogs/change-status/{id}', ['middleware'=>'auth','uses'=>'BlogController@changeStatus']);
    Route::post('/blogs/delete-image/{id}', 'BlogController@deleteImage');

});

Auth::routes();

Route::get('{locale?}', 'HomeController@index');
Route::get('/en', 'HomeController@index');
Route::get('/open-chat', 'ChatController@index');
Route::get('/ar', 'HomeController@index');
Route::get('/home', 'HomeController@index')->name('home');

Route::post('/get-cities-by-country', 'SearchController@getCitiesByCountry');
Route::post('/get-subjects-by-category', 'SearchController@getSubjectsByCategory');

Route::post('/register', 'CommonController@register');
Route::post('/login', 'CommonController@login');
Route::post('/forgot-password', 'CommonController@forgotPassword');
Route::get('/{locale?}/reset-password/{token}', 'CommonController@resetPassword');
Route::post('/{locale?}/resetpassword', 'CommonController@resetNewPassword')->name('reset-pass');

Route::get('/{locale?}/classes/search', 'ClassController@searchClasses')->name('search');
Route::get('/{locale?}/classes/all-cities', 'ClassController@getAllCitiesClasses');
Route::get('/{locale?}/classes/{type}/{id}', 'ClassController@getClassesByType');

Route::get('/{locale?}/view-class/{id}', 'ClassController@viewTeacherClassDetails')->name('view-class');
Route::get('/{locale?}/finish-class/{id}', 'ClassController@finishTeacherClass')->name('finish-class');

Route::post('/create-booking', 'CommonController@createBooking');
Route::post('/{locale?}/submit-review', 'CommonController@submitReview');

Route::get('/{locale?}/blogs', 'HomeController@getAllBlogs')->name('blogs');
Route::get('/{locale?}/blogs/{slug}', 'HomeController@getBlogDetails')->name('blogs.detail');


Route::get('/paypal/checkout/{order}/completed', [
    'name' => 'PayPal Express Checkout',
    'as' => 'paypal.checkout.completed',
    'uses' => 'User\BookingController@completed',
]);

Route::get('/paypal/checkout/{order}/cancelled', [
    'name' => 'PayPal Express Checkout',
    'as' => 'paypal.checkout.cancelled',
    'uses' => 'User\BookingController@cancelled',
]);

Route::post('/webhook/paypal/{order?}/{env?}', [
    'name' => 'PayPal Express IPN',
    'as' => 'webhook.paypal.ipn',
    'uses' => 'User\BookingController@webhook',
]);

/**
    User dashboard routes start
**/
Route::group(['prefix'=>'{locale?}/user', 'namespace' => 'User','middleware' => 'auth'], function () {
    Route::get('/dashboard', 'DashboardController@index')->name('user.dashboard');
    Route::get('/edit-profile', ['uses'=>'ProfileController@editProfile'])->name('user.edit-profile');
    Route::post('/update-profile/{id}', ['uses'=>'ProfileController@updateProfile'])->name('user.update-profile');
    Route::post('/update-image/{id}', ['uses'=>'ProfileController@updateUserImage'])->name('user.update-image');
    Route::get('/change-password', ['uses'=>'ProfileController@changePassword'])->name('user.change-password');
    Route::post('/update-password', ['uses'=>'ProfileController@updatePassword'])->name('user.update-password');

    Route::get('/my-classes', ['uses'=>'ClassController@getTeacherClasses'])->name('user.my-classes');
    Route::get('/my-classes/add-new-class', ['uses'=>'ClassController@createNewClass'])->name('user.add-new-class');
    Route::post('/my-classes/save-class', ['uses'=>'ClassController@saveClass'])->name('user.save-class');
    Route::get('/my-classes/edit-class/{id}', ['uses'=>'ClassController@editClass'])->name('user.edit-class');
    Route::post('/my-classes/update-class/{id}', ['uses'=>'ClassController@updateClass'])->name('user.update-class');
    Route::get('/my-classes/delete-class/{id}', ['uses'=>'ClassController@deleteClass']);


    Route::post('/get-subjects-by-category', ['uses'=>'ClassController@getSubjectsByCategory']);
    Route::post('/get-classes-by-category-and-subject', ['uses'=>'ClassController@getClassesByCategoryAndSubject']);

    Route::get('/my-bookings', ['uses'=>'BookingController@getAllBookings'])->name('user.my-bookings');
    Route::get('/my-bookings/view-booking-details/{id}', ['uses'=>'BookingController@viewBookingDetails'])->name('user.view-booking-details');
    Route::get('/my-bookings/cancel-booking/{type}/{id}', ['uses'=>'BookingController@cancelBooking']);
    Route::get('/my-bookings/accept-booking/{id}', ['uses'=>'BookingController@acceptBooking']);
    Route::post('/make-a-payment', ['uses'=>'BookingController@makePayment'])->name('user.make-payment');

    Route::get('/my-orders', ['uses'=>'OrderController@getAllOrders'])->name('user.my-orders');
    Route::get('/messages', ['uses'=>'MessageController@getMessageThreads'])->name('user.messages');
    Route::get('/messages/view-messages/{thread_id}', ['uses'=>'MessageController@getAllMessagesByThreadID'])->name('user.view-messages');
    Route::post('/messages/send-message', ['uses'=>'MessageController@sendMessage']);

    Route::get('/reviews', ['uses'=>'BookingController@getAllReviews'])->name('user.reviews');

});

扩展Controller.php:

<?php

namespace App\Http\Controllers;

    use Illuminate\Foundation\Bus\DispatchesJobs;
    use Illuminate\Routing\Controller as BaseController;
    use Illuminate\Foundation\Validation\ValidatesRequests;
    use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

    class Controller extends BaseController
    {
        use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
    }

正常,var_dump 没有停止脚本,die 应该是 die()。相反,使用 dd(123123)。控制器一切正常。

由于该路由没有auth中间件,我们可以假设该路由对所有人开放。在控制器中,您正在检查使用是否经过身份验证,如果没有,则重定向到 /.

此规则 Route::get('{locale?}', 'HomeController@index'); 捕获所有路由,因为它始终为真。所以 Laravel 遵循这条路线。

问题不在于 Route::get('/open-chat', 'ChatController@index'); 如果您在该路由之后放置任何路由,它将无法正常工作。

我们通常使用它来捕获所有请求转发到 Vuejs 路由器或显示 404 消息等地方。

Route::any('{catchall}', 'CatchAllController@handle')->where('catchall', '.*');

这些都差不多。如果你把 Route::get('{locale?}', 'HomeController@index'); 放在路由器文件的末尾,一切都会正常工作。