2016-07-10 3 views
0

I以下のコントローラがあります。私は希望Laravel 5.1戻りコントローラへのクラスからの眺め

class MyController extends Controller { 
    public function getTestView() { 
     return view("user::index"); 
    } 
} 

の代わりに私のコントローラメソッドから直接、ビューを返すのに 返却する責任がある別のオブジェクトを持っていますいくつかの計算コードを追加した後のこのビュー

これが私のクラスである:

class User extends AbstractPerson { 

    function __construct() {  
     $this->initView(); 
    } 

    private function initView(){ 
     return view('user::index'); 
    } 
} 

私のコントローラは、次のようになります。

class MyController extends Controller { 
    public function getTestView() { 
     return new User(); 
    } 
} 

これを呼び出した後、私は次のエラーを取得:なぜ

UnexpectedValueException in Response.php line 395: The Response content must be a string or object implementing __toString(), "object" given.

任意のアイデア?おかげ

+0

ビューの場所を渡すために使用しているこの規約は何ですか? 'user :: index'? –

答えて

0

は例外が語っているものを、次の試してみてください。

class User extends AbstractPerson { 

    function __toString() {  
     return $this->initView(); 
    } 

    private function initView(){ 
     return view('user::index'); 
    } 
} 
+0

user :: indexについては、userはビューセクションのフォルダ、indexはブレードファイルです。私は$ this-> initView()を返しました。しかし、それでも動作しません。 – Steve

+0

@ Steve通常の規約は 'user.index'になります。私は「::」の使用を知らなかった。多分それは問題ですか? –

+0

私はモジュラーパッケージhttps://github.com/Artem-Schander/L5Modular/blob/master/README.mdを使用しています。user ::はパッケージ名を定義し、ファイルのインデックスを付けます – Steve

0

コントローラがレスポンスオブジェクトを返す必要があり、あなただけの新しいユーザーオブジェクトを返しています。

class MyController extends Controller { 
    public function getTestView() { 
     User u = new User(); 
     return u->initView(); 
    } 
} 
関連する問題