我正在尝试验证Laravel中的单选按钮。这是我的代码,但它不起作用。
在我的情况下,我有一个动态表单,其中包含许多不同类型的问题,例如:收音机,支票簿,单输入,数字输入......所以我必须使用数组名称每种类型的问题。例如: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
我的代码使用文本输入类型,但不支持radio&amp;复选框。 有人可以帮帮我吗?
答案 0 :(得分: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
在Controller中,您需要引用请求文件并使用依赖注入将其放入您的函数中。
如果要使用所选收音机的值,请使用$ 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'];
}
}
?>
答案 1 :(得分:1)
一天之后,我找到了解决问题的方法。
在规则代码中使用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';
}
我还在View中添加了此代码的错误:
if($errors->has('radio.'.$count_radio.'')) {
echo $errors->first('radio.'.$count_radio.'');
}
就是这样。
答案 2 :(得分:0)
您的输入标记以</label>
结尾。
不确定这是否有帮助。