如果isset laravel 5

时间:2015-12-26 07:29:08

标签: php forms laravel laravel-5.1 laravelcollective

好的,我在最近几天搜索过,并且找不到合理的答案。我很肯定它是可行的,但不确定我是否在我脑海中。我是Laravel 5的新手,也是PHP的新手。我尝试将输入的字符串从我的(laravel集体)表单的GET [' quote']部分发送到使用下面的新视图更新的相同表单,该表单使用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]);
}

2 个答案:

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

答案 1 :(得分: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>