2013-11-11 1 views
0

У меня установлены мои отношения, когда мои проекты связаны с клиентами, что я хочу сделать, чтобы иметь возможность выбирать выбор в моем представлении проекта проекта через выпадающий список ,Как создать динамический выбор выпадающего списка в laravel 4

Это может быть достигнуто так:

{{ Form::select('client', array('s' => 's', 'm' => 'm'), 's');}}

Однако я не уверен, как я хотел бы сделать это динамически из данных я извлечения из базы данных, кода я до сих пор является:

{{ Form::open(array('action' => '[email protected]', 'id' => 'createproject')) }} 
    <div class="form-group"> 
    <? $projects = Auth::user()->clients; ?> 
@if (Auth::check()) 
    @if (count($projects) > 0) 
    @foreach ($projects as $client) 

{{ Form::select('client', array('client_one' => 'client_one', 'client_two' => 'client_two'), 'client_one');}} 

    @endforeach 
    @else 
    <h3>You have no projects click <a href="/project/create">here to create a project</a></h3> 
@endif 
@endif 
</div> 
<div class="form-group"> 
    {{ Form::label('project_name', 'Project Name') }} 
    {{ Form::text('project_name', Input::old('project_name'), array('class' => 'form-control')) }} 

</div> 

Может ли кто-нибудь указать мне, как я могу заполнить это поле выбора динамически?

Заранее благодарен!

+0

С какой контроллер загружаемой это 'view' показать код контроллера, который обрабатывает запрос 'database', чтобы получить данные. –

+0

@RCV 'ProjectController' и' Create' View – 001221

ответ

3

Выполнение обработки данных в представлении не является хорошей идеей. Что вам нужно сделать, так это подготовить массив в контроллере и использовать этот массив в представлении.

В вашем контроллере.

$clients = Auth::user()->clients; 
$client_selector = array(); 

foreach($clients as $client) { 
    $client_selector[$client->name] = $client->name; // I assume name attribute contains client name here 
} 

return View::make('your.view', array(.., 'client_selector' => $client_selector, ...)); 

С вашего взгляда.

@if(count($client_selector)>0) 
    {{Form::select('client', $client_selector, array_values($client_selector)[0])}} 
@endif 
+0

спасибо! это сработало! не возражаете ли вы объяснить, почему обработка данных в представлении не является хорошей идеей? просто потому, что я нахожусь на ранних стадиях личного проекта, и я хочу убедиться, что я хорошо разбираюсь в сценарии :) – 001221

+0

Это называется разделением проблем. Поскольку представление представляет собой уровень представления, он должен выполнять только эту задачу и эту задачу. Подробнее см. Раздел «Разделение проблем» на странице http://laravelbook.com/laravel-introduction/ – tharumax

0

Я думаю, что это будет лучшим решением:

В контроллере:

$clients = Auth::user()->clients->lists('name', 'name'); 

return View::make('your.view', array(.., 'clients' => $clients, ...)); 

на ваш взгляд:

{{ Form::select('client', $clients) }} 
Смежные вопросы