2015-12-26 5 views
1

Хорошо, я искал последние пару дней и не смог найти ответ, который имел смысл. Я уверен, что это выполнимо, но не уверен, что я нахожусь над моей головой. Я новичок в Laravel 5, а также довольно новичок в PHP. Я пытаюсь отправить введенную строку из GET ['quote'] части моей (laravel collect) формы в ту же форму, которая обновляется с новым представлением под ней, в котором используется переменная GET. В основном сохраняя то, что кто-то вводит в поле поиска после обновления.Передача PHP Переменная от GET до текущей формы, если isset laravel 5

Обычно я бы просто выделил нужную переменную, если она «установлена», а затем оставит ее пустой, если она не находится в разделе «значение» = «» текстового поля. В Laravel с этой формой я не могу этого сделать из-за рендеринга дочернего представления в родительском представлении (родительский, потом ребенок), если я правильно понимаю. Есть ли какая-нибудь работа? Я готов к тому, чтобы просто сделать старое эхо в форме, если я не могу найти решение.

Заранее благодарен! Этот сайт помог мне с моими вопросами в течение последних нескольких месяцев.

Текущий вид на родительский вид.

{{ Form::open(array('url' => 'search', 'method' => 'get')) }} 
{!! Form::text('query', '', [ 
        'class' => "form-table", 
        'placeholder' => "Search Keywords", 
        'value' => "{{ $query }}" 
        ]) !!}</td> 
{!! Form::submit('Submit') !!} 
{{ Form::close() }} 

Код ниже формы - это передать строку текстового поля другому виду и показать его ниже этой формы. Я не знаю ни одного JS, поэтому я немного волнуюсь, вероятно, пытаясь что-то сделать, что просто не сработает.

@yield('child') 

Код приведен ниже с моего контроллера.

public function getSearch(){ 
$title = "Page Title"; 
$query = "some string"; //This was set to $_GET['query'] but was failing. 
return view('pages.search')->with("title", $title)->with("query", $query); 

Рабочий код: Для всех, кто работает в этом вопросе


Форма Код: value = "" был в неправильном месте на моем первоначальном виде, а поэтому я поместил $query в соответствующий массив форм ниже.

{{ Form::open(array('url' => 'search', 'method' => 'get')) }} 
{{ Form::text('query', $query, [ 
        'class' => "form-table", 
        'placeholder' => "Search Keywords", 
        ]) 
}} 
{{ Form::submit('Submit') }} 
{{ Form::close() }} 

Pages Controller. Добавлен в начало моего контроллера под пространством имен.

use Illuminate\Http\Request; 

Контроллер:

public function getSearch(Request $request){ 
$title = "Search"; 
$query = $request->input("query", ""); 
return view('pages.search', ["title" => $title, "query" => $query]); 
} 
+0

Вам не нужно лезвие лексемы в значении 'value' (' {{ '&'}} ') , Если это верно в 'GET', вы должны передавать объект' Request' на контроллер и обращаться к нему таким образом – Chris

+0

Я быстро просмотрел его и буду продолжать искать некоторые пояснения, поскольку это начинает иметь смысл, но я не совсем там. Что делать, если объект пуст, т.е. первый раз приземляется на этой странице? –

ответ

1

Вы были близки, но не хватает пару ключевых частей. Сначала вам нужно передать запрос на контроллер для доступа, ну, запрос.

Я бы очень рекомендовал прочитать эту часть документов, прежде чем вы слишком сильно застреваете в Laravel.Ответы и запросы являются сердцем всех вещей задний конец:

https://laravel.com/docs/5.1/requests https://laravel.com/docs/5.1/responses

Контроллер

use Illuminate\Http\Request; 

public function getSearch(Request $request) 
{ 
    $title = "Page Title"; 
    $query = $request->input("query", ""); // get the 'query' string, or default to an empty string 

    return view('pages.search', [ 
     'title' => $title, 
     'query' => $query, 
    ]); 
} 

Посмотреть

{!! Form::open(['url' => 'search', 'method' => 'get']); !!} 
{!! Form::text('query', $query, [ 
        'class' => "form-table", 
        'placeholder' => "Search Keywords" 
        ]); 
!!} 
{!! Form::submit('Submit'); !!} 
{!! Form::close(); !!} 
+0

Это огромная помощь. Я думаю, что самое важное для понимания ответов и запросов имеет несколько реальное приложение о том, как их реализовать. Я читал обе эти страницы пару раз сегодня и вчера, но не мог понять. С вашими изменениями, которые помогают тонне понять его. Я сейчас буду работать над этим позже и вернусь к вам, как все это выйдет. Благодаря тонну. –

+0

Не беспокойтесь. Не забудьте отметить правильность, если это действительно решение вашей проблемы. Это помогает не только вам, но и будущим пользователям stackoverflow – Chris

+0

По какой-то причине я получаю ту же ошибку, с которой я сталкивался с запросами. Он указывает, что переменная: request не определена. –

0

Сначала проверьте query имеет любую ценность. Если нет, он вернет пустую строку, поскольку для второго аргумента поля input установлено значение ''. Затем он будет искать базу данных для данного ключевого слова.

Контроллер:

public function getSearch(Request $request) 
{ 
    $title = "Page Title"; 
    if(Input::has('query')){ 
     $query = Input::get('query'); 
    } 
    $data = DB::table('table_name')->where('column_name','like','%'.$query.'%'); 

    // or if you use model you can use this 
    $data = ModalName::all()->where('column_name','like','%'.$query.'%'); 

    return view('pages.search', compact('title','data')); 
} 

клинка:

{!! Form::open(array('url' => 'search', 'method' => 'get')) !!} 
{!! Form::text('query', '', [ 
    'class' => "form-table", 
    'placeholder' => "Search Keywords", 
    ]) !!} 
{!! Form::submit('Submit') !!} 
{!! Form::close() !!} 

// To view data add the table below search form 

<table> 
    <tr> 
     <th>col1</th> 
     <th>col2</th> 
     <th>col3</th> 
    </tr> 
    @foreach($data as $d) 
    <tr> 
     <td>{{ $d->column_one }}</td> 
     <td>{{ $d->column_two }}</td> 
     <td>{{ $d->column_three }}</td> 
    </tr> 
    @endforeach 
</table> 
+0

Я ценю ответ, но это простая форма, передающая простую переменную другому виду. Ваш ответ на месте, хотя, если я пытаюсь получить доступ к БД, а затем обход содержимого на основе запроса. Хотя имя моего ввода текста является запросом, это фактически не запрос. –