如何验证单选按钮/复选框并且必须在 laravel 中选择一个
Posted
技术标签:
【中文标题】如何验证单选按钮/复选框并且必须在 laravel 中选择一个【英文标题】:How to validate radio button/checkbox and must to select one in laravel 【发布时间】:2015-08-17 22:45:00 【问题描述】:我正在尝试验证 Laravel 中的单选按钮。这是我的代码,但它不起作用。
就我而言,我有一个 dynamic 表单,其中包含许多不同类型的问题,例如:收音机、支票簿、单输入、数字输入……所以我必须使用数组名称每种类型的问题。例如:name="radio['.$k.']"。
在我的控制器中,我进行了验证,$key 是初始形式的 $k 值。
public function rules()
$rules = [];
if (Input::has('radio'))
foreach (Input::get('radio') as $key => $val)
$rules['radio.' . $key] = 'required';
if (Input::has('singleinput'))
foreach (Input::get('singleinput') as $key => $val)
$rules['singleinput.'.$key] = 'required|max:10';
public function messages()
$messages = [];
if (Input::has('radio'))
// some code here;
public function answer_store($survey_id, $patient_id)
$rule = $this->rules();
$message = $this->messages();
$validator = Validator::make(Input::all(), $rule, $message);
在视图中:
<input type="radio" name="radio['.$k.']" value="'.$str1.'">'.$answer->answer_body
我的代码适用于文本输入类型,但不适用于单选和复选框。 谁能帮帮我?
【问题讨论】:
验证时,您需要知道$key
是什么,否则您只是需要您已经拥有的东西,这没有任何意义并且浪费时间。
@user3158900:就我而言,我有一个包含许多不同类型问题的表单,例如:收音机、支票簿、单输入、数字输入……所以我对每个问题都使用了数组名称类型的问题。例如:name="radio['.$k.']"。在我的控制器中,我进行验证,$key 是初始形式的 $k 值。 Anw,我更清楚地更新了我的问题。
【参考方案1】:
好的,没有回复,如果您使用的是 Laravel 5,这就是我的答案。
Laravel 5 在您提交表单时使用请求。您可以在该数据执行控制器之前对其执行验证。
首先使用你的终端运行一个工匠命令
php artisan make:request MyRequest
这将在 App\Http\Requests 中创建一个文件。
把这个放到新的请求文件中
<?php namespace App\Http\Requests;
use App\Http\Requests\Request;
class MyRequest extends Request
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
return true;
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
return [
'myRadios' => 'required'
];
在您看来,拥有如下所示的收音机,确保您想要的收音机组都具有相同的名称。
<input type="radio" name="myRadios" value="1"> Number 1
<input type="radio" name="myRadios" value="2"> Number 2
<input type="radio" name="myRadios" value="3"> Number 3
在您的控制器中,您需要引用请求文件并使用依赖注入将其放入您的函数中。
当你想使用被选中的单选值时,你可以使用 $request 数组
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Requests\MyRequest;
class MyController extends Controller
/**
* Display a listing of the resource.
*
* @return Response
*/
public function myFormFunction(MyRequest $request)
//Get the value of the radio selected
$myVariable = $request['myRadios'];
?>
【讨论】:
谢谢,但我认为我的解决方案也使用“必需”规则,与您一样,它适用于文本输入验证。我也会尝试你的解决方案。我正在使用 Laravel 5。 我在这里发现了我的问题。在规则代码中使用 if (Input::has('radio')) 。因为如果我不选择任何东西,就没有任何与电台相关的信息要验证。【参考方案2】:一天后,我找到了解决问题的方法。
在规则代码中使用 if (Input::has('radio')) 。因为如果我 不要选择任何东西,没有任何与收音机相关的信息 验证。
对于我使用的一系列无线电问题:
<input type="radio" name="radio['.$count_radio.']" value="'.$str1.'">
我的问题是我不知道每个表格有多少无线电问题。我有很多不同的形式。我将统计 View 文件中单选表的数量并传递给 Controll ($count_radio)。
在控制器中,我制定这样的规则:
for ($key = 1; $key <= $count_radio; $key++)
$rules['radio.' . $key] = 'required';
我还在视图中添加了这段代码的错误:
if($errors->has('radio.'.$count_radio.''))
echo $errors->first('radio.'.$count_radio.'');
就是这样。
【讨论】:
【参考方案3】:您的输入标签以</label>
结尾。
不确定这是否会有所帮助。
【讨论】:
谢谢,但我不明白你的意思?我可以使用 进行验证 @Giang 我认为他是在说您在输入标签中缺少结束/
:<input ... />
,但这是一个标记,而不是导致您的问题的原因。
你使用的是什么版本的 Laravel?以上是关于如何验证单选按钮/复选框并且必须在 laravel 中选择一个的主要内容,如果未能解决你的问题,请参考以下文章