Передача переменной PHP из GET в текущую форму, если isset laravel 5

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

Обычно я просто выводил бы нужную переменную, если она «установлена», а затем оставлял бы ее пустой, если ее нет в разделе «значение» = «» текстового поля. В 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() }}

Контроллер страниц.
Добавлено в верхней части моего контроллера ниже пространства имен.

use Illuminate\Http\Request;

контроллер:

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

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(); !!}
1

Другие решения

Сначала проверьте, если 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

По вопросам рекламы [email protected]