2017-06-14 17 views
0

私はLaravelの新機能ですが、私がよく理解していない概念がいくつかあります。私は多くの多くのページ、チュートリアル、およびスタックオーバーフローソリューションを読んだので、私は本当にあなたの助けが必要です。私は必要な結果を得ることができません。 データベースのインデックスページに「患者」のリストが表示されています。ここで コードです:私は何をしたいかあるビューから別のビューにパラメータを渡すLaravel

@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 

、そしてあなたが見ることができるように、「患者」の名前は、(この場合)にrefereseリンク、フォームです。 私はこれから2つの事を得たいと思う。 ONE:私がクリックしている患者のIDと「患者」の名前を取得し、フォームページに送信したいと思います。 TWO:フォームページにフォームの上部に「patient」という名前を表示し、フォームテーブルに保存するために「patient_id」を非表示にしたい(このpatient_idはforeingキーになります)

ROUTE:

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

CONTROLLER

public function create($id) 
{ 
    // 

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

VIEW:

これが私の現在のコンポーネントであります
<div class="form-group"> 

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

    </div> 

しかし、私はページをロードするたびに、それは空白のページが表示され、URLに、私は以下を参照してください。

http://hospital.dev/care/ます$ row-> ID

私は本当にこれであなたの助けに感謝。

更新日: ありがとうございます。 そのIDを送信します。フォームのページを表示しようとする。しかし、それはまだ空白のページを送信し、URLは以下の通りです:

CONTROLLER: 公共 「http://hospital.dev/care/1

が、私はそれがコントローラ上で何かあれば知りません関数は、($のID) {//

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

は、どのように私はURLになく、ビューに何のid値を渡すべきではありません作成しますか?

+0

みんなありがとう。その作業ALREADY。:) – Pisicato

答えて

0

あなたは、単にHREFを連結できテ。その後、ルート定義で処理し、他のコントローラに渡すことができます。例えば

ダイナミックリンクを作成ビュー:あなたのルートで、その後

@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 

/web.php:

Route::get('/endpoint/{id}', '[email protected]'); 
その後、

それはあなたが行うことができ、コントローラの@関数ショーに渡さをいくつかのロジック:

/** 
    * 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()です。

0

urlがhttp://hospital.dev/care/$row->idの理由は、一重引用符を使用しているためです。そのため、変数の値は取得されません。リストで

置き換える:
{{url('/care/$row->id')}}
付:
{{url('/care/'+$row->id)}}

+0

あなたはまた、IDを送信 –

+0

@DovBenyominSohacheskiいやの二重引用符を意味しますdispにフォームページを置くと、空白のページが送信され、URLは次のようになります。 "http://hospital.dev/care/1" –

0

ここでは、文字列<a href="{{url('/care/$row->id')}}">として変数$row->idをエコーし​​ている、あなたは値を印刷する必要があります。

あなたはあなたに私はあなたがこの使用route()ヘルパーのようにそれを書き換える示唆という名前のルートを持っているので:

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

私は最初の引数と{id}としてルート名createを通過し、route()ヘルパーと呼ばれますrouteは第2引数として期待します。

もう一つの方法は、ちょうど''の外に変数を移動すると、このようなURLにそれを追加することによって、あなたの方法を修正するために、次のようになります。

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

. PHPで別の文字列ではなく、+に文字列を追加しますあなたはROUにIDを通過した後

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

+0

その仕事。しかししようとしたときでしょう代わりに+? – Pisicato

+0

ありがとうございます。そのIDを送信します。しかし、フォームページを表示しようとすると、それでも空白のページが送信され、URLは次のようになります。 "http://hospital.dev/care/1" コントローラ上に何かがあるかどうかわかりません: CONTROLLER:public function create($ id){// 戻るビュー($ this-> path。 '。care'、['id' => $ id]); } URLにid値を渡すのではなく、ビューにどのように渡す必要がありますか? – Pisicato

+0

これで、コントローラの 'create($ id)'メソッドにロジックを書き込まなければなりません。あなたは患者に '$ id'を持っています。患者のためにあなたのデータベースを照会し、それをビューに渡し、ビュー内にフォームの内容を行う必要があります。 – devk

0

使用しているリンクは、「IDのようなものです)}} "> はので、ここであなたが文字列としてIDを印刷している。しかし、あなたは

IDのようにこれを使用する必要があります)}}">

OR

ID}} ">

関連する問題