2015-11-01 64 views
2

我是Laravel的新成員。我閱讀文檔和谷歌搜索,但我無法找到我的問題的答案。Laravel 5 - 控制器無法正常工作的視圖('test')

我試圖渲染一個簡單的視圖test.blade.php(位於資源/視圖)。

一)第一次嘗試: 在app/HTTP/routes.php文件我寫

Route::get('/', function(){ 
    return view('test'); 
}); 

它的工作。歡呼!我看到我的簡單的網站

二)第二次嘗試: 在app/HTTP/routes.php文件我寫

Route::get('/', '[email protected]'); 

我已經在app/HTTP /控制器 創建控制器WelcomeController.php內部控制我寫道:

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Requests; 
use App\Http\Controllers\Controller; 

class WelcomeController extends Controller 
{ 
    public function index() 
    { 
     return view('test'); 
    } 
} 

而....這是行不通的,我只看到空白頁。 好吧,我正在挖掘和挖掘,並試圖瞭解問題是什麼。我改變了retun視圖('test')返回view() - > make('test');但它不工作 - 它只生成空白頁... ...

然後我只是改變retun回聲:回聲視圖('測試'); 它像魅力一樣工作。

我在做什麼錯?在互聯網上展示的所有例子返回視圖(「..‘)不回視(’...」)(這是醜陋的)...

請幫我:)

+0

只用於測試嘗試編寫'dd(「test」);'返回'view('test')之前''看看屏幕上是否帶有測試文本 –

+1

嘗試激活調試模式並查看它是否返回特定錯誤,這可能是你的WelcomeController遇到類問題 –

+0

dd(「test」)在瀏覽器中產生「test」。 這是我的.env: APP_DEBUG =真 我已經改變了控制器名稱爲TestabcController(當然routes.php到新的控制器名稱),這是行不通的 –

回答

0

另一種方法是路線定義使用數組

試試這個:

你也可以指定數組內的控制器和動作。

這裏我們要說的路線使用指數函數內的WelcomeController

添加在routes.php文件

Route::get('/', [ 'uses' => '[email protected]' ]); 

希望這是有益。

+0

我一直在說OP這不是他在長時間聊天后工作的問題 –

1

經過幾個小時的挖掘,我明白了!

我決定創建第二個項目,並使用composer在另一個目錄中安裝laravel。接下來,我打開了我用來比較這兩個安裝的偉大工具名稱Meld。我注意到主控制器控制器存在一些差異。PHP的位於應用程序/ HTTP /控制器

在我的第一個安裝(與問題)是:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Foundation\Bus\DispatchesJobs; 
use Illuminate\Routing\Controller as BaseController; 
use Illuminate\Foundation\Validation\ValidatesRequests; 
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; 

abstract class Controller extends BaseController 
{ 
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 

    public $auto_render = true; 

    /** 
    * Execute an action on the controller. 
    * 
    * @param string $method 
    * @param array $parameters 
    * @return \Symfony\Component\HttpFoundation\Response 
    */ 
    public function callAction($method, $parameters) 
    { 
     parent::callAction($method, $parameters); 
    }  
} 

而在第二個安裝:

​​

我決定從刪除callAction Controller.php因爲它只調用父方法。然後我檢查我的網頁瀏覽器...和

Hurrrayy它的工作....返回視圖(「測試」),它應該工作...

我認爲,在以前的一些版本Laravel的此方法已添加,並在接下來有人刪除它......但爲什麼它阻止渲染模板?

這是因爲覆蓋功能沒有返回結果...... 當我改變了像這樣的功能:

public function callAction($method, $parameters) 
{ 
    return parent::callAction($method, $parameters); 
} 

這是解決方案!現在一切都很好。

我想感謝大家,特別是maytham-mahiam和revo,感謝您的大力幫助。

+0

確實歡迎您 –

+0

up-vote。一個很好的摔角問題。 – revo