因此,我们正在为学校项目构建CMS,我们需要通过多个组织来使其动态化。在组的前缀中,添加一个$gid
变量,该变量代表该组织的ID。
Route::middleware('auth')->prefix('{$gid}/admin')->group(function()
因此,我还创建了一个抽象的基本控制器,admin部分中的每个控制器都将继承。
abstract class BaseAdminController extends Controller
我现在想要的是路由中的$gid
变量,并将其解析为构造函数中的基本控制器。
protected $gid;
public function __construct() {
$this->gid = .....;
}
现在,我可以在任何地方访问此ID,而不必将其解析为每个单独的控制器和功能。
答案 0 :(得分:0)
您不需要在每个操作中都“解析”它,但您应该保留它,因为否则,您将无法访问路线的其他参数,因为第一个参数丢失了,Laravel也无法正确分配下一个。而且您不需要在参数开头添加美元符号。
// routes/web.php
// ↓ No dollar sign here
Route::middleware('auth')->prefix('{group}/admin')->group(function() {
// Routes
});
// In any of your Controllers
use Illuminate\Http\Request:
class SomeController extends BaseController
{
public function index(Request $request, Group $group) // you might add more parameters here
{
// Access your $group model
}
}
如果不需要组模型,请不要定义参数的类型,并且不会加载相关数据:
public function index(Request $request, $group) // Now $group is just a number