如何在Laravel的请求类中使用if / else

问题描述

我仅将一页用于“创建广告页面”。

如何对查询(“类型”)使用多个验证规则?

ads.blade.php

@if ($request->query('type') == 'text')

   //fields

@elseif($request->query('type') == 'post')

   //fields

@elseif($request->query('type') == 'banner')

   //fields

@endif

AdsRequest.php

public function rules(Request $request)
{

    //this if not work. how to resolve?

    if ($request->query('type') == 'text'){
        return [
            'title'  => ['required','max:255',Rule::unique('ads')->ignore($this->route('ad'))],'url' => 'required','type' => 'required|in:text,banner,post,sidebar','status' => 'nullable','btn' => 'nullable','pic' => 'nullable','description' => 'required',];
    }
}

如何对查询(“类型”)使用多个验证规则?

解决方法

在请求类中,您可以通过all()方法访问接收到的数据。

$data = $this->all();
$type = isset($data['type'])? $data['type'] : null;

switch($type) {
     case "text": 
        return [
           'url' => 'required'
        ]
}

请注意,您在rules()方法中返回的是一个普通的PHP数组,该数组可以是不同数组的合并。您可能有一些规则,与type字段无关。

$commonRules = [
   'title' => 'required','email' => 'required|email',];
$specificRules = [];

$data = $this->all();
$type = isset($data['type'])? $data['type'] : null;

switch($type) {
     case "text": 
        $specificRules = [
           'url' => 'required',];
        break;

     case "foo":
        $specificRules = [
            'btn' => 'nullable',];
        break;
}

return array_merge($commonRules,$specificRules);

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...