2017-06-14 2 views
0

Ich bin neu mit Laravel und es gibt einige Konzepte, die ich nicht sehr gut verstehe. Ich brauche deine Hilfe wirklich, weil ich viele Seiten, Tutorials und Stackoverflow-Lösungen gelesen habe und nicht die Ergebnisse bekomme, die ich brauche. Ich habe eine Liste von "Patienten" auf einer Indexseite aus einer Datenbank angezeigt. Hier ist der Code:Übergeben von Parametern von einer Ansicht zu einer anderen 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 

Was ich tun möchte, und wie Sie sehen können, der "Patient" Name ist ein Link, der zu referese (in diesem Fall) eine Form. Ich möchte zwei Dinge davon bekommen. ONE: Ich möchte die ID des Patienten, auf den ich klicke, und den Namen des "Patienten" abrufen und an die Formularseite senden. ZWEI: auf der Formularseite Ich möchte den "Patienten" Namen auf der Oberseite des Formulars anzeigen, und die "Patient_id" ausgeblendet, um es in der Formulartabelle zu speichern (diese patient_id wird ein foreing Schlüssel sein)

Dies sind meine aktuellen Komponenten:

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> 

Aber immer, wenn ich die Seite zu laden, zeigt es eine leere Seite und auf der URL Ich sehe die folgenden:

http://hospital.dev/care/ $ row-> id

Ich schätze Ihre Hilfe bei diesem wirklich.

UPDATE: DANKE. Es sendet jetzt die ID. Aber wenn man versucht, die Form-Seite anzuzeigen, sendet er noch die leere Seite, und die URL ist folgende: „http://hospital.dev/care/1

ich weiß nicht, ob es etwas auf dem Controller ist:

REGLER: Öffentlichkeit Funktion create ($ id) { //

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

wie soll ich den ID-Wert nicht an die uRL übergeben, sondern auf die Ansicht?

+0

Danke an alle. ITS arbeiten bereits. :) – Pisicato

Antwort

0

Sie könnten einfach verketten die href:

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

Sobald Sie die ID in Ihre rou bestanden haben te. Sie können dann mit der Routendefinition umgehen und sie an Ihren anderen Controller übergeben.

zum Beispiel einer Ansicht, die dynamischen Links erstellt:

@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 

dann in Ihren Routen/web.php:

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

dann wird es an die Steuerung @ Funktion Show geleitet, wo Sie tun können etwas Logik:

/** 
    * 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]); 

    } 

und wenn Sie Ihre Ansicht zurückgeben. Sie können Daten übergeben, die von der Funktion übergeben wurden, die Sie auf Ihrem Controller definiert haben. In diesem Fall ist diese Funktion show() auf dem EndpointController.

0

Der Grund, dass die URL http://hospital.dev/care/$row->id ist, weil Sie einfache Anführungszeichen verwenden, so wird es nicht den Wert der Variablen erhalten.

in der Liste ersetzen:
{{url('/care/$row->id')}}
mit:
{{url('/care/'+$row->id)}}

+0

Sie meinen, doppelte Anführungszeichen statt der +? –

+0

@DovBenyominSohacheski Ja, das auch –

0

Hier sind Sie Variable $row->id als String Echo <a href="{{url('/care/$row->id')}}">, müssen Sie den Wert drucken.

Da Sie Sie Routen haben genannt Ich schlage vor, Sie es neu schreiben, wie dieser mit route() Helfer:

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

Hier rief ich die route() Helfer, übergeben den Routennamen create als erstes Argument und die {id}, dass die Route erwartet als zweites Argument.

Eine andere Möglichkeit wäre, nur Ihre Methode zu beheben, indem Sie die Variable aus '' bewegen und an die URL wie folgt angehängt:

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

Zeitraum . anhängt auf eine andere Zeichenfolge in PHP eine Zeichenfolge, nicht +

+0

Sein die ID zu senden funktionieren würde. Aber bei dem Versuch, zu disp legen Sie die Formularseite, es sendet immer noch die leere Seite, und die URL ist die folgende: "http://hospital.dev/care/1" – Pisicato

+0

DANKE. Es sendet jetzt die ID. Aber beim Versuch, die Formularseite anzuzeigen, sendet es immer noch die leere Seite, und die URL ist folgende: "http://hospital.dev/care/1" Ich weiß nicht, ob es etwas auf dem Controller ist: CONTROLLER: öffentliche Funktion create ($ id) {// Rückansicht ($ this-> Pfad. '. Care', ['id' => $ id]); } Wie soll ich den ID-Wert Nein an die URL übergeben, sondern an die Ansicht? – Pisicato

+0

Nun, Sie müssen Ihre Logik in die 'create ($ id)' Methode Ihres Controllers schreiben. Sie haben die Patienten $ id, Sie müssen Ihre Datenbank nach dem Patienten abfragen, ihn an die Ansicht übergeben und Ihre Formulare in der Ansicht ablegen. – devk

0

Der Link, den Sie verwenden, ist wie id ')}} "> so hier Sie die ID als Zeichenfolge gedruckt wird. Aber Sie müssen diese verwenden wie

id)}}">

ODER

id}} ">

Verwandte Themen