2016-10-02 5 views
3

Dies ist eine einfache Sache, tatsächlich aber da im neuen in Laravel es mir beunruhigen, ich habe diese FunktionAufruf Funktion von der Steuerung im Hinblick Laravel

class HomeController extends Controller { 
    public $layout = 'layouts.master'; 
    public function __construct() 
    { 
     $this->middleware('auth'); 
    } 
    public function index() 
    { 
     return view('landing-page') 
     ->with('title','Landing Page') 
     ->with('users',User::member()->get()); 

    } 
    <!-- HOW TO CALL getDate Function in my view --> 
    public function getDate(){ 
     $mytime = Carbon::now()->format('f'); 
     $response = array 
       (
        'content' =>$mytime, 
        'status' =>'success', 
       ); 
     return Response::json($response)->view('landing-page');  
    } 
} 

, wie es in meiner Laravel Ansicht nennen? ich suche alles über das Internet, aber ich verstehe nicht ganz, da die Programmierung für mich neu ist Ich habe schon so etwas aus meiner Sicht unter Verwendung der Routen {{url('date')}}, {{$mytime}} versucht, aber keine funktioniert, gut kann ich eine Funktion aufrufen, wenn bestimmte Ereignisse wie Klick-Taste passieren sonst aber wenn kein bestimmtes Ereignis ganz es verwirrend mich

<p>Month :{{url('date')}}</p> 
<p>Month :{{$mytime()}}</P> 

oben sind einige Möglichkeiten, habe ich versucht, die Funktion unter Dateien `app \ helpers.php

UPDATE WHAT I'VE TRIED BASED on @tptcat answer and work

create helpers.php gelegen zu nennen 0.123.

<?php 
use Carbon\Carbon; 
if (! function_exists('myGetDate')) { 
    function myGetDate() 
    { 
     $mytime = Carbon::now()->format('F'); 
     return $mytime 
    } 
} 

composer.json

"autoload": { 
    "files":[ 
     "App/helpers.php" 
    ], 

Funktion meiner Ansicht nach Aufruf

{{myGetDate()}} 
+0

was ist der Fehler? –

+0

@SanzeebAryal keine, es ist nichts anzeigen –

+0

Vergessen Sie nicht, den Befehl 'composer dump-autoload' auf Ihrem Terminal auszuführen, nachdem Sie die Datei helpers erstellt und dem Abschnitt autoload von composer.json hinzugefügt haben. –

Antwort

3

Dies ist keine feste Regel, sondern Teil eines Rahmens zu verwenden, ist zu wenig in ihre Konventionen und Verwendung kaufen sie zu deinen Vorteilen.

Im Allgemeinen sind Ihre Controller für die Arbeit mit HTTP (GET, POST, PUT, etc.). Sie sind nicht dazu gedacht, wahllose Methoden zum Aufrufen von Methoden aus Ihren Ansichten zu verwenden.

Ich würde empfehlen, so etwas wie dies stattdessen tun:

// app/Utilities.php 
<?php 

class Utilities 
{ 
    public static function getDate() 
    { 
     // your code 
    } 
} 

dann in der Ansicht:

{{ Utilities::getDate() }} 

oder:

// app/helpers.php 
<?php 

if (! function_exists('myGetDate')) { 
    function myGetDate() 
    { 
     // your code 
    } 
} 

dann in der Ansicht:

{{ myGetDate() }} 

und dann in composer.json automatisch geladen je nachdem, was Datei, die Sie erstellen:

"autoload": { 
    "files": [ 
     "app/Utilities.php" 
    ] 
} 

oder ...

"autoload": { 
    "files": [ 
     "app/helpers.php" 
    ] 
} 

und dann composer dump-autoload laufen.

Eine andere Möglichkeit, dies zu erreichen, könnte Blade Service Injection (eingeführt in Laravel 5.1) sein. Dies kann technisch mit dem Controller erfolgen:

// In your blade template 
@inject('service', 'App\Http\Controllers\HomeController') 

{{ $service->getDate() }} 

Aber ich immer noch empfehlen würde die Rücksendung diese Daten nicht ein Verfahren, in dem Controller in Ladung, wenn es wird als eine Methode von einer Blade-Vorlage aufgerufen werden.irgendeine Art von Service-Klasse wäre besser geeignet:

// app/Utilities.php 
<?php 

namespace App; 

class Utilities 
{ 
    public function getDate() 
    { 
     // your code 
    } 
} 

// In your blade template 
@inject('service', 'App\Utilities') 

{{ $service->getDate() }} 

und in diesem Fall würden Sienicht an den in composer.jsonfiles automatisch geladen Array hinzufügen müssen.

Für was es wert ist, nichts anderes über Ihr Projekt zu wissen, würde ich eine der ersten zwei Optionen wählen, und eher die helpers.php Option.

+0

wenn ich 'helpers.php' verwende, wie ich meine Funktion in meiner Ansicht –

+0

anrufe, aktualisierte ich meine Antwort. Wenn Sie die helper- oder die Utilities-Klassenidee verwenden, befolgen Sie die Schritte zum Hinzufügen zu Ihrer 'composer.json' und zum Ausführen von' composer dump-autoload' – tptcat

+0

tat genau das, was Sie sagten, es kommt ein Fehler wie 'Uncaught TypeError : Argument 1 wurde an Activity \ Exceptions \ Handler :: report() übergeben und muss eine Instanz von Exception sein. –

0

Versuchen Sie folgendes:

class HomeController extends Controller { 

     public function __construct() 
     { 
      $this->middleware('auth'); 
     } 

     public function index() 
     { 
     $title = 'Landing Page'; 
     $users = \User::member() - > get(); 
     $mytime = \Carbon::now()->format('f'); 

     return view('layouts.master.landing-page', [ 
      'title'  => $title, 
      'users'  => $users, 
      'mytime'  => $mytime 
      ] 
     ); 
     } 

    } 

Und es innerhalb der Landung Seitenansicht angezeigt werden würden Sie sie mit Zugang:

{{ $title }} 
{{ $users }} 
{{ $mytime }} 
+0

Die Frage ist über Daten in der Ansicht, die nicht über den Controller gesendet wurde. – tptcat

Verwandte Themen