如何解决此未捕获的UnexpectedValueException:无效的路由操作

时间:2019-06-25 02:53:17

标签: php laravel-5 routes

我正在尝试将基于闭包的路由转换为使用单个动作控制器

因此,在我的路由文件夹内的Fuzzy.php上,我做到了 写代码

Route::get('theme/{file?}', 'FuzzyController')->name('fuzzy-theme.get');

并在Core \ Controllers \ Assets中的我的FuzzyController.php上

<?php

//namespace App\Http\Controllers;
namespace Core\Controllers\Assets;

// use App\User;
use App\Http\Controllers\Controller;

class FuzzyController extends Controller
{
    /**
     * Show the profile for the given user.
     *
     * @param  int  $id
     * @return View
     */
    public function __invoke(Request $request, $file = null)
    {
        $path = base_path(config('path.themes', 'themes').'/'.settings('active_theme', 'default'))."/$file";
        $fileArray = explode('/', $file);
        $lastFile = end($fileArray);
        $extension = explode(".", $lastFile);
        $fileExtension = end($extension);
        $isCss = 'css' === $fileExtension ? true : false;

        if (! in_array($fileExtension, config('downloadables', []))) {
            return abort(403);
        }

        if (\File::exists($path)) {
            $headers = [
                'Cache-Control' => 'public',
                'Content-Type' => 'text/css'
            ];
            return response()->file($path, $isCss ? $headers : []);
        }

        return abort(404);
        // return view('user.profile', ['user' => User::findOrFail($id)]);
    }

}

可以解释一下为什么我得到无效的路线动作吗,谢谢:D

1 个答案:

答案 0 :(得分:0)

问题是因为您尚未在路由定义中使用名称空间。将您的路线定义更改为:

Route::get('theme/{file?}', 'Core\Controllers\Assets\FuzzyController')->name('fuzzy-theme.get');

希望这会有所帮助。