Laravel - 覆盖自定义请求的魔术 _get 方法 class
Laravel - Overwrite magic _get method for a custom Request class
我有一个自定义请求 class PersonRequest
用于导出项目,我在其中操作原始请求并创建新请求,我需要覆盖默认魔法 get
请求方法
我可以调用 $request->get($key)
并且我已经在我的 PersonRequest
中覆盖了那个方法,但是:
如何覆盖 $request->key
?
我想你可以覆盖 PersonRequest
的构造函数并按如下方式更改密钥:
function __constructor(Request $request){
$request->key = 'new_key'; //override the key here
}
假设您想操作请求对象的内容,您可以根据需要添加和删除键
PersonsController
public function store(PersonRequest $request)
{
$value = $request->key;
$request->request->remove('key');
$request->request->add(['different' => $value]);
dd($request->different);
}
PersonRequest
public function rules()
{
return [
'key' => 'required'
];
}
Blade View
<form action="/person" method="POST">
@csrf
<input type="text" name="key" value="someone">
<button type="submit">Submit</button>
</form>
路线
Route::post('/person', 'PersonController@store');
Result
"someone"
您可以看到 here 如何 Laravel 实现它,并且通过遵循该方法的签名,您可以将自定义 __get
魔术方法放在同一个 class您放置自定义 get
方法的位置。
也许如果您提供有关您要实现的目标的更多详细信息,可能会有更简单的方法来解决问题而不是覆盖请求 class。
我有一个自定义请求 class PersonRequest
用于导出项目,我在其中操作原始请求并创建新请求,我需要覆盖默认魔法 get
请求方法
我可以调用 $request->get($key)
并且我已经在我的 PersonRequest
中覆盖了那个方法,但是:
如何覆盖 $request->key
?
我想你可以覆盖 PersonRequest
的构造函数并按如下方式更改密钥:
function __constructor(Request $request){
$request->key = 'new_key'; //override the key here
}
假设您想操作请求对象的内容,您可以根据需要添加和删除键
PersonsController
public function store(PersonRequest $request)
{
$value = $request->key;
$request->request->remove('key');
$request->request->add(['different' => $value]);
dd($request->different);
}
PersonRequest
public function rules()
{
return [
'key' => 'required'
];
}
Blade View
<form action="/person" method="POST">
@csrf
<input type="text" name="key" value="someone">
<button type="submit">Submit</button>
</form>
路线
Route::post('/person', 'PersonController@store');
Result
"someone"
您可以看到 here 如何 Laravel 实现它,并且通过遵循该方法的签名,您可以将自定义 __get
魔术方法放在同一个 class您放置自定义 get
方法的位置。
也许如果您提供有关您要实现的目标的更多详细信息,可能会有更简单的方法来解决问题而不是覆盖请求 class。