我正在尝试将基于闭包的路由转换为使用单个动作控制器
因此,在我的路由文件夹内的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
答案 0 :(得分:0)
问题是因为您尚未在路由定义中使用名称空间。将您的路线定义更改为:
Route::get('theme/{file?}', 'Core\Controllers\Assets\FuzzyController')->name('fuzzy-theme.get');
希望这会有所帮助。