2016-01-15 1 views
3

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

{!! Form::open(array('method' => 'POST', 
     'action' => '[email protected]', 
     'class' => "form-horizontal form-label-left")) !!} 
    {!! csrf_field() !!} 
     <input type="text" class="form-control" name="Customer"> 
     <button type="submit">Search</button> 
{!! Form::close() !!} 

Ниже код в контроллере

$AllCustomers = \App\Models\Customer_Model 
    ::where('Customer', 'LIKE', '%'.$Customer.'%') 
    ->get(); 
return View('Customer.List', array('AllCustomers' => $AllCustomers)); 

Что я пытаюсь?

Когда форма отправлена ​​для поиска в представлении, я должен иметь возможность снова просмотреть ключевое слово в текстовом поле. Для этого я делаю это ниже.

return View('Customer.List', array('AllCustomers' => $AllCustomers, 'Key' => $Customer)); 

и теперь в форме, я делаю ниже.

<input type="text" class="form-control" name="Customer" value="{{$Key}}"> 

Вопрос

Есть ли лучший способ заполнить входные значения формы в приведенной выше форме поиска?

+0

Выбирает меня. – mopo922

+0

Могу ли я использовать что-то вроде этого? 'return View ('Customer.List', array ('AllCustomers' => $ AllCustomers)) -> withInput();' – Pankaj

+0

Я знаю, что работал в L4, но я не могу найти его в документах для L5. Вы попробовали? – mopo922

ответ

0

Я думаю, что правильный подход проверки, если ключ присутствует в запросе, используя входной инлайн проверку $request->input('key', null), если так будет возвращать нуль, в противном случае возвращает ключ, проверьте код, приведенную ниже ,

Контроллер:

public function index(Request $request) 
{ 
    $key = $request->input('key', null); 

    $allCustomers = \App\Models\Customer_Model 
     ::where('Customer', 'LIKE', '%'.$Customer.'%')->get(); 

    return View('Customer.List', compact('allCustomers', 'key')); 
} 

Вид:

<input type="text" class="form-control" name="Customer" value="{{is_null($key)?'':$key}}"> 

Надеется, что это помогает.

+0

Есть ли способ плагина 'withInput();' метод? – Pankaj

+0

У вас нет только входов для отправки здесь, так как вы хотите отправить также '$ allCustomers', поэтому IMO это не один из случаев, когда вы должны использовать' withInput(); '. –

0

Я думаю, что это может быть дроид, что вы ищете:

use Illuminate\Http\Request; 

class MyController extends Controller 
{ 
    /** 
    * My action. 
    * 
    * @param Request $request 
    * @return View 
    */ 
    public function index(Request $request) 
    { 
     ... 
     return View('Customer.List', array_merge(
      ['AllCustomers' => $AllCustomers], 
      $request->only(['Customer']) 
     )); 
    } 

use линии и параметр типа намекали в методе действия выполняют инъекции зависимостей объекта Request.

Слияние $request->only(['Customer']) в ваши параметры просмотра дает вам желаемую функциональность «со входом».

Laravel документ:https://laravel.com/docs/master/requests

+0

Вы уверены, что нам нужно передать '$ request-> all()' в форме? Я просто проверил это ** содержит много вещей **, которые ** не являются частью формы ** и является ** очень тяжелым объектом **. – Pankaj

+0

@ PankajGarg действительный пункт. Я обновил ответ, чтобы вместо этого использовать '$ request-> only()'. – mopo922

+0

Наконец-то мы оба на одном треке. Не так ли? – Pankaj