2013-06-12 27 views
6

Tôi đã tự hỏi liệu một số người trong Laravel có thể giúp đỡ không.Laravel 4 - Đầu vào :: cũ cho các nút radio

Tôi có một biểu mẫu trong đó tôi có 2 nút radio, khi biểu mẫu gửi nó qua trình xác thực, nếu trình xác thực không quay lại biểu mẫu, hãy điền vào các trường có đầu vào và hiển thị thông báo lỗi. Tôi không thể làm điều này cho các nút radio, nếu một nút được nhấp khi biểu mẫu được gửi và có lỗi, nó quay trở lại biểu mẫu với mọi thứ được điền EXCEPT nút radio đã được kiểm tra hiện đang trống.

nút radio của tôi là như sau:

<input type="radio" name="genre" value="M" class="radio" id="male" /> 
<input type="radio" name="genre" value="F" class="radio" id="female" /> 
<span class="error">{{ $errors->first('genre') }}</span> 

Bất kỳ trợ giúp sẽ được đánh giá rất nhiều.

Trả lời

12

Bạn có thể làm điều này:

<input type="radio" name="genre" value="M" class="radio" id="male" <?php if(Input::old('genre')== "M") { echo 'checked="checked"'; } ?> > 
<input type="radio" name="genre" value="F" class="radio" id="female" <?php if(Input::old('genre')== "F") { echo 'checked="checked"; } ?> > 
+0

Này, điều đó sẽ kiểm tra nút radio nam theo mặc định sẽ không? – BigJobbies

+1

Vâng, bạn có thể chuyển đổi nó để phụ nữ mặc định. Nhưng nếu bạn muốn bạn có thể đặt một câu lệnh if trong cả hai trường đầu vào. – JasonMortonNZ

+1

Bạn không muốn bất kỳ đầu vào radio nào được chọn theo mặc định? Tôi đã cập nhật mã của mình để không có dữ liệu nhập nào được chọn theo mặc định. – JasonMortonNZ

19

Bạn có thể thử sử dụng này ra khỏi hộp Radio HTML Laravel của ... Laravel Docs Form checkboxes and Radio

Sử dụng lưỡi,

{{ Form::radio('genre', 'M', (Input::old('genre') == 'M'), array('id'=>'male', 'class'=>'radio')) }} 
{{ Form::radio('genre', 'F', (Input::old('genre') == 'F'), array('id'=>'female', 'class'=>'radio')) }} 

Hoặc chỉ cần php,

echo Form::radio('genre', 'M', (Input::old('genre') == 'M'), array('id'=>'male', 'class'=>'radio')); 
echo Form::radio('genre', 'F', (Input::old('genre') == 'F'), array('id'=>'female', 'class'=>'radio')); 
+0

Im nhìn thấy điều này 'Phương pháp radio không tồn tại.' khi tôi sử dụng điều này – BigJobbies

+0

Nó không xuất hiện rằng các mã trong câu hỏi đang sử dụng lưỡi templating hoặc laravel HTML/Form giúp đỡ – JasonMortonNZ

+0

Rất tiếc ... Chỉ cần đề xuất .. kể từ khi ông đề cập laravel .. Chúc mừng – Melvin

1

Tôi đã chỉ vấp phải điều này và tôi không muốn lặp lại các điều kiện như vậy trên mọi hình thức, vì vậy tôi đã tạo ra một hàm trên lớp Helper của tôi.

helper.php:

class Helper { 

    // other functions 

    public static function oldRadio($name, $value, $default = false) { 
     if(empty($name) || empty($value) || !is_bool($default)) 
      return ''; 

     if(null !== Input::old($name)) { 
      if(Input::old($name) == $value) { 
       return 'checked'; 
      } else { 
       return ''; 
      } 
     } else { 
      if($default) { 
       return 'checked'; 
      } else { 
       return ''; 
      } 
     } 

     // Or, short version: 
     return null !== Input::old($name) ? (Input::old($name) == $value ? 'checked' : '') : ($default ? 'checked' : ''); 
    } 
} 

Vì vậy, bây giờ hình thức của tôi, tôi chỉ sử dụng nó như thế này:

<label>Please select whatever you want</label> 
<div class="radio-inline"><label><input type="radio" name="whatever" value="1" required {{ Helper::oldRadio('whatever', '1', true) }}> One</label></div> 
<div class="radio-inline"><label><input type="radio" name="whatever" value="2" {{ Helper::oldRadio('whatever', '2') }}> Two</label></div> 
<div class="radio-inline"><label><input type="radio" name="whatever" value="3" {{ Helper::oldRadio('whatever', '3') }}> Three</label></div> 

Mỗi tùy chọn chuyển tên và giá trị của nó với chức năng trợ giúp và trước đó người được chọn sẽ in 'đã chọn'. Ngoài ra, một tùy chọn có thể chuyển 'true' làm thông số thứ ba để nó được chọn nếu không có đầu vào cũ.

1

Sử dụng với Bootstrap & Tự động kiểm tra

Thêm mã này vào cuối file: ứng dụng/start/global.php

//... 

Form::macro('radio2', function($group ='group-name', $value_model = 'value-model', $label ='label-radio', $value_radio = 'value-radio', $attrs = array()) 
{ 

    $item = "<div class='radio'>"; 
    $item .= "<label>"; 
    $item .=  Form::radio($group, $value_radio, ($value_model == $value_radio) ? true : false, $attrs); 
    $item .=  $label; 
    $item .= "</label>"; 
    $item .= "</div>"; 

    return $item; 
}); 

Theo quan điểm của bạn.php

{{ Form::radio2('status', Input::old('status'), 'Online', '1', array()) }} 
{{ Form::radio2('status', Input::old('status'), 'Offline', '0', array()) }} 

kết quả cuối cùng:

enter image description here

0

tôi đã cố gắng chỉ đơn giản là sử dụng Input :: get() thay vì Input :: cũ() .... và nó đã làm việc !! {{Form::radio('estado','V',(Input::get('estado')=="V"))}}