Jon*_*hon 22 php laravel laravel-5
我在我的项目中为我的一个模型设置了一些路径/模型绑定,并且工作得很好.我能够在路径路径中使用绑定,并接受我的模型实例作为控制器中相关方法的参数.
现在我正在尝试使用这个模型,所以我在我的控制器中创建了一个接受表单请求的方法,以便我可以进行一些验证.
public function edit(EditBrandRequest $request, Brand $brand)
{
// ...
Run Code Online (Sandbox Code Playgroud)
我的模型的每个不同实例都可以以不同方式进行验证,因此我需要能够使用模型的实例来构建一组自定义验证规则.
有没有办法获取模型的实例,从表单请求注入控制器?
我尝试在Form Request的构造函数中对模型实例进行类型提示
class EditBrandRequest extends Request
{
public function __construct(Brand $brand)
{
dd($brand);
}
Run Code Online (Sandbox Code Playgroud)
我也尝试在Form Request的rules()方法中对模型实例进行类型提示.
class EditBrandRequest extends Request
{
// ...
public function rules(Brand $brand)
{
dd($brand);
Run Code Online (Sandbox Code Playgroud)
在这两个实例中,我都提供了模型的空/新实例,而不是我期望的实例.
当然,我总是可以通过不打扰表单请求来解决这个问题,只需在控制器中生成规则并手动验证 - 但如果可能的话,我宁愿选择Laravel方式.
谢谢
Rif*_*fki 37
您可以使用绑定键简单地访问它,例如,如果您绑定Brand模型:$router->model('brand', '\App\Brand')您可以获取模型的实例$this->brand.这是验证规则示例:
'slug' => 'required|unique:brand,slug,' . $this->brand->id,
Run Code Online (Sandbox Code Playgroud)
编辑
有时您可能有一个输入名称使用与绑定键相同的名称,例如,如果您绑定Address模型,address那么您有一个输入字段,address它将使Laravel混淆.对于这种情况,您可以使用route()方法.
'address' => 'required|unique:addresses,address,' . $this->route('address')->id,
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8362 次 |
| 最近记录: |