Laravel响应式下拉列表

时间:2014-09-08 11:38:48

标签: php jquery forms select laravel

我是laravel和php的新手,如果这是愚蠢的话我很道歉(我是一个C#dev尝试做一些网页开发),我正在制作一个表单,我想要一个下拉列表,如果某个选择出现是在同一个表格中的另一个下拉列表中制作的,我希望有人能告诉我这是怎么做的,到目前为止这是我的代码..

<h4>Select Object Type</h4>
{{ Form::select('shapeType', $Shapes) }}
@if($shapeType == "Triangle")
{{ Form::select('TriangleType', $TriangleTypes) }}
@endif

正如您所看到的,第一个下拉列表包含$ Shapes,其中包含一个形状列表,如果选择Square,我想显示另一个下拉列表,您可以在其中选择它是什么类型的三角形。所以从我的控制器我填充$ Shapes和$ TriangleTypes,当前代码给我一个错误,因为$ shapeType是未声明的,这是我尝试阅读上一个下拉列表的不良尝试。所以一些帮助将非常感激。

由于 兰多

1 个答案:

答案 0 :(得分:0)

你不能用直接的php做这个,因为php在加载时生成为html。它无法捕捉初始下拉的变化。

而是使用javascript(带或不带jQuery)来捕获选择select选项时触发的change事件。然后使用ajax将所选数据发送到服务器,并根据发送的数据检索正确的下拉数据。

代码示例 - 请注意这是未经测试的,可能会有一些错误,但希望它足以让您入门。

Route::get('/shapes', array(
    'uses' => 'ExampleController@myShapes'  
));

class ExampleController extends BaseController{
    public function myShapes{
    if(Request::ajax()){
        $type = Input::get('shapeType');

        switch($shapeType){
        case 'triangle':
             //get triangle data
             break;
        case 'square':
             //get square data
             break;
        default:
            //invalid input sent
            break;
        }
        return $data;
    }
    }
}

$('#shapeType').change(function(){
    shapeValue = //get value from the selected item
    $.ajax({
        url: '/shapes',
        data: shapeValue
        success: function(result){
            //change/update drop down to result data
        }
    });
});