将参数从一个视图传递到另一个视图Laravel

时间:2017-06-14 19:21:08

标签: php laravel controller routes parameter-passing

我是Laravel的新手,有一些我不太了解的概念。我真的需要你的帮助,因为我已经阅读了很多页面,教程和stackoverflow解决方案,我没有得到我需要的结果。 我在数据库的索引页面上显示了“患者”列表。 这是代码:

 @if($data)
    <table class="table">
    <thead>
    <tr>
        <td>Nombre de Paciente</td>
        <td>Cedula</td>
        <td>Fecha</td>
        <td>Telefono</td>
        <td>Email</td>
        <td>Direccion</td>
        <td>Fecha de Creación</td>
        <td></td>
        </tr>
        </thead>
        <tbody>
        @foreach($data as $row)
        <tr>
        <td>
        <a href="{{url('/care/$row->id')}}"> {{ $row->paciente }}</a></td>
            <!--<td>{{ $row->paciente }}</td>-->
            <td>{{ $row->cedula }}</td>
            <td>{{ $row->fecha_nacimiento }}</td>
             <td>{{ $row->telefono }}</td>
            <td>{{ $row->email }}</td>
            <td>{{ $row->direccion }}</td>
            <td>{{ $row->created_at }}</td>
            <td>

            </td>
        </tr>
        </tbody>
        @endforeach
    </table>
    @endif

我想做什么,正如您所看到的,“患者”名称是一个链接,它引用(在这种情况下)一个表单。 我想从中得到两件事。 一:我想得到我点击的病人的身份和“病人”的姓名,并将其发送到表格页面。 TWO:在表单页面上,我想在表单顶部显示“患者”名称,并隐藏“patient_id”以将其保存在表单表格中(此patient_id将是一个预备键)

这是我目前的组成部分:

ROUTE:

Route::get('/care/{id}', [
'as' => 'create',
'uses' => 'CareController@create' ]);

CONTROLLER

 public function create($id)
{
    //

    return view ($this->path.'.care',['id'=>$id]);
}

查看:

    <div class="form-group">

    <label for="exampleInputEmail">Paciente </label>
  <input type="hidden" name="id" value="{{$id}}">

  </div>

但每当我加载页面时,它会显示一个空白页面,在网址上我会看到以下内容:

http://hospital.dev/care/ $行级别&GT;编号

我真的很感谢你对此的帮助。

更新: 谢谢。 它现在发送id。但是在尝试显示表单页面时,它仍然会发送空白页面,并且网址如下: “http://hospital.dev/care/1

我不知道控制器上是否有东西:

控制器:  公共功能创建($ id)     {         //

    return view ($this->path.'.care',['id'=>$id ]);
}

我应该如何将id值no传递给url但是传递给视图?

4 个答案:

答案 0 :(得分:0)

网址为http://hospital.dev/care/$row->id的原因是因为您使用单引号,因此它不会获取变量的值。

在列表中替换:
{{url('/care/$row->id')}}
附:
{{url('/care/'+$row->id)}}

答案 1 :(得分:0)

此处您将变量$row->id作为字符串<a href="{{url('/care/$row->id')}}">回显,您需要打印该值。

既然您已经获得了名为的路线,我建议您使用route()帮助器重写它:

<a href="{{ route('create', ['id' => $row->id]) }}">

在这里,我调用route()帮助程序,将路由名称create作为第一个参数传递,将路由期望的{id}作为第二个参数传递。

另一种方法是通过将变量移出''并将其附加到网址来纠正您的方法:

<a href="{{url('/care/' . $row->id)}}">

句点.将字符串附加到php中的另一个字符串,而不是+

答案 2 :(得分:0)

你可以简单地连接href:

<a href='/care/{{$row-id}}'></a>

一旦你将id传递给你的路线。然后,您可以处理路径定义并将其传递给其他控制器。

例如创建动态链接的视图:

@extends('layouts.app')

@section('content')
    <div class="container">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                <div class="panel panel-default">
                    <div class="panel-heading">Endpoint</div>
                </div>

                <table class="table table-bordered" id="endpoint-table">
                    <thead>
                    <tr>
                        <th>id</th>
                        <th>name</th>
                        <th>ip</th>
                        <th>mac</th>
                        <th>proxy</th>
                        <th>model</th>
                    </tr>
                    </thead>
                    <tbody id="endpoint-table-body">
                        @foreach($endpoints as $endpoint)

                            <tr><td><a href="/endpoint/{{$endpoint->id}}">{{$endpoint->id}}</a></td><td>{{$endpoint->name}}</td><td>{{$endpoint->ip}}</td><td>{{$endpoint->mac}}</td><td><a href="/proxy/{{$endpoint->proxy}}">{{$endpoint->proxy}}</a></td><td><a href="/model/{{$endpoint->model}}">{{$endpoint->model}}</a></td></tr>

                        @endforeach
                    </tbody>
                </table>


            </div>
        </div>
    </div>

@endsection

然后在你的routes / web.php中:

Route::get('/endpoint/{id}', 'EndpointController@show');

然后它被传递给controller @ function show,你可以在那里做一些逻辑:

/**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {

        $endpoint = Endpoint::getObjectById($id);

        $e = new \stdClass();

        $e->id = $endpoint->id;
        $e->name = $endpoint->name;
        $e->ip = $endpoint->ipaddress;
        $e->mac = $endpoint->macaddress;
        $e->model = $endpoint->model_id;
        $e->proxy = $endpoint->proxy_id;

        $endpoint = $e;

        $endpoints = array();

        $endpoints[] = $endpoint;

        return view('endpoints', ['endpoints' => $endpoints]);

    }

当您返回视图时您可以传递从控制器上定义的函数传递的数据。在这个例子中,函数是EndpointController上的show()。

答案 3 :(得分:0)

您使用的链接就像ID&#39;)}}&#34;&gt; 所以在这里你将id打印成一个字符串。但你需要像

一样使用它

ID)}}&#34;&GT;

OR

ID}}&#34;&GT;