我想將當前欄位的值傳遞給 Laravel 專案中 Request 類中的自定義驗證函式。
我嘗試了以下方法:
public function rules()
{
return [
'id'=>'required',
//'type'=>'required|in:Attachment,Audio,Book,Picture,Video',
'type'=>['required', $this->validateFileType()],
//'type'=>[new Enum(FileType::class)], # only available on PHP 8.1
'soft_price' => 'numeric|min:1000',
'hard_price' => 'numeric|min:1000',
];
}
public function validateFileType($type){
$file_types = ['Attachment', 'Audio', 'Book', 'Picture', 'Video'];
if(in_array($type, $file_types))
return true;
else
return false;
}
我收到以下錯誤:
"Too few arguments to function App\\Http\\Requests\\FileUpdateRequest::validateFileType(), 0 passed in C:\\xampp\\htdocs..."
我該怎么做?
uj5u.com熱心網友回復:
您應該查看自定義驗證規則。
您可以使用 artisan 添加自定義規則類:
php artisan make:rule MyFileType
在其中,您可以訪問當前值并輸出自定義錯誤訊息
public function passes($attribute, $value)
{
$file_types = ['Attachment', 'Audio', 'Book', 'Picture', 'Video'];
if(in_array($value, $file_types))
return true;
else
return false;
}
您可以像這樣在代碼中使用它:
use App\Rules\MyFileType;
public function rules()
{
return [
...
'type' => ['required', new MyFileType],
...
];
}
uj5u.com熱心網友回復:
創建新規則:
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class FileTypeRule implements Rule
{
public function passes($attribute, $value)
{
$file_types = ['Attachment', 'Audio', 'Book', 'Picture', 'Video'];
if(in_array($file_types, $value))
return true;
else
return false;
}
}
在請求規則方法中使用它:
public function rules()
{
return [
'id'=>'required',
'type'=>['required', new FileTypeRule()],
'soft_price' => 'numeric|min:1000',
'hard_price' => 'numeric|min:1000',
];
}
uj5u.com熱心網友回復:
您必須在規則函式中傳遞兩個引數,有關更多資訊,請查看laravel 檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/381148.html
