2017-06-11 2 views
0

Ich bin neu im Laravel 5.4.i hat den search_code Controller so entwickelt.Laravel 5 Controller Rückgabewert funktioniert nicht so wie ich es möchte

public function search_code(Request $request){ 
    $query  = $request->search; 
    $queryType = $request->institute; // 'id' or 'name' 
    $items  = DB::table('registerdetails');   

    if($queryType == 'id'){ 
     $items = $items->where('trainee_id', 'LIKE',"%$query%"); 
    } 
    if($queryType == 'full_name'){ 
     $items = $items->where('full_name', 'LIKE',"%$query%"); 
    } 
    $items = $items->get(); 
    return view('traineeattendance.index')->with('items',$items); 
} 

Was ich brauche, ist $ item werden müssen, übergeben und in zwei verschiedenen Ansichten von diesem Controller wie

return view('traineeattendance.index')->with('items',$items); 

Und

return view('traineeattendance.attendance')->with('items',$items); 

Wie kann ich es tun gecallt?

+0

Sie könnten https lesen möchten : //laravel.com/docs/5.4/views#passing-data-to-views –

+0

sir, können Sie bitte fügen Sie mir das notwendige Codebeispiel es würde sehr geschätzt werden. ich lese das, aber ich verstehe es nicht hoffe, um neu zu das Laravel.können Sie bitte diese Hilfe? – Dasun

+0

"funktioniert nicht wie ich will", weil es nicht so gemacht wurde, wie Sie es verwenden möchten (Sie können nicht 2 Ansichten von 1 Methode zurückgeben). Anstatt zu versuchen, Dinge auf Ihre Art zu erzwingen, zwingen Sie sich, so zu arbeiten, wie die Werkzeuge funktionieren. Machen Sie Ihr Leben einfacher –

Antwort

-1

Zuerst stoppen, es sei denn es ist sehr kompliziert Abfrage ist. Erstellen Sie ein Modell statt

namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 

class RegisterDetails extends Model 
{ 
    protected $table  = 'registerdetails'; 
    /* Look into documentation for rest of the fields */ 
} 

Dann gilt für alles, was Sie Modell erstellen suchen müssen Tive

namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 

class RegisterDetails extends Model 
{ 
    protected $table  = 'registerdetails'; 

    public static function scopeTrainee($query, $input) 
    { 
     if(!empty($input)) { 
      $query->where("trainee_id", $input); 
     } 
    } 

    public static function scopeFullname($query, $input) 
    { 
     if(!empty($input)) { 
      $query->where("full_name", 'LIKE', $input); 
     } 
    } 
} 

Ihre Code-Controller Vereinfachen

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Models\RegisterDetails; 

class RegisterDetailsController extends Controller 
{ 
    public $data = []; 

    public function search_code(Request $request){ 
     if($request->institute == 'id'){ 
      $this->data['items'] = RegisterDetails::Trainee($request->search)->get(); 
     } 
     if($request->institute == 'full_name'){ 
      $this->data['items'] = RegisterDetails::FullName($request->search)->get(); 
     } 
     return view('traineeattendance.index', $this->data); 
    } 
} 

Bei nun der Indexansicht Artikel Daten hat, wenn Sie verwenden die Anwesenheitsansicht in der Indexansicht, auf die auch diese Daten zugreifen können.

Wenn beide Index und die Teilnahme sind verschiedene Ansichten (man ist nicht von einem anderen enthalten), dann haben Sie etwas falsch auf Design-Ebene, und Sie müssen den Fall ein wenig erklären, mehr

+0

Unerklärter Downvote ist das Beste, was du in der SO-Community fühlen kannst –

-1

Verwenden Sie etwas wie view::share('variable_name', 'variable_value').

Ihr Fall:

Go auf Boot-Methode fügen Sie die Zeile AppServiceProvider: * vergessen Sie nicht, die Linie auf Boot-Methode zu importieren fügen Sie die Klassen

Dann:

View::share('items', search_code()); 

Dies nimmt den Rückgabewert von der Methode search_code() und stellt ihn für alle Ansichten als $items

zur Verfügung

Gehen Sie wie folgt vor: Gehen Sie in App- Providers-AppServiceProvider zu AppServiceProviders.php und fügen Sie bei der Boot-Methode die folgenden Namespaces hinzu. mit DB Fassade in MVC-Framework

use Illuminate\Support\Facades\View; 
use App\Http\Controllers\YourController; 

    public function boot() 
     { 
      $controller = new YourController; 

      View::share('items', $controller->search_code()); 
     } 
+0

Herr, können Sie bitte erklären mit dem Code Bit mehr bitte. Weil ich nicht verstehe, was Sie sagen, wenn ich weiß, dass dies kein Problem – Dasun

+0

@LKlemendi Wie kann ich dies in meine Search_code-Controller anwenden? – Dasun

+0

Verwenden Sie View :: share(), wenn Sie wirklich brauchen, ist es schwer Overkill, um es für 2 Aufrufe zu verwenden –

0
<?php 

namespace App\Providers; 

use Illuminate\Support\Facades\View; 

class AppServiceProvider extends ServiceProvider 
{ 
    /** 
    * Bootstrap any application services. 
    * 
    * @return void 
    */ 
    public function boot() 
    { 
     View::share('items', search_code()); // this line will inject the return value of search_code() in all views in your app 
    } 

    /** 
    * Register the service provider. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     // 
    } 
} 
+0

@Thoms Wie kann dies in meine Search_code-Controller von mir gegeben – Dasun

+0

I ein Beispiel gemacht, wenn es immer noch nicht klar ist, habe ich Angst, Sie sollten zuerst die Dokumente lesen, eine kleine Demo selbst machen und es dann erneut versuchen. Best of luch obwohl! –

Verwandte Themen