Хорошо, я искал последние пару дней и не смог найти ответ, который имел смысл. Я уверен, что это выполнимо, но не уверен, что над головой. Я новичок в 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]);
}
Вы были близки, но пропустили пару ключевых частей. Сначала вам нужно передать запрос контроллеру, чтобы получить доступ к запросу.
Я очень рекомендую прочитать эту часть документации, прежде чем вы слишком сильно застрянете в 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(); !!}
Сначала проверьте, если 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>