0

簡単な質問だと思います。

コントローラーで関数を呼び出すルートがあります。そのコントローラーでは、別のコントローラー関数への呼び出しがあります。

例えば:

$_testing = with(new TestingController)->prepwork($variable1,$variable2);

TestingController prepwork() 内で、条件が一致した場合、

return Response::view(...);

質問 - なぜそれだけでは不十分なのですか? 戻り値は呼び出し元の関数に制御を戻すだけですが (これは理にかなっています)、Laravel にどのように指示すればよいでしょうか? 実行していることを停止して、そのビューを出力します。

それを機能させるには、次のことを行う必要があります。

$_testing = with(new TestingController)->prepwork($variable1,$variable2);
return $_testing;

準備作業は、いくつかの重い作業を行ってから結果モデルを出力するように設計されているため、実際には機能しません。ビューは、エラーが発生した場合にのみ開始されます。

そしてはい - 私はこのようなことができることを知っています:

if ($_testing->whatImCheckingForErrors) { return Response::view(...); }

Response::view が返されても処理が終了しない理由を理解しようとしています...それが理にかなっている場合。

4

1 に答える 1

2

アプリケーションはこの最後のリターンを受け取り、送信されたものをすべてレンダリングするため、最後のリターンのみが処理を終了します。

別のメソッド (2) を呼び出し、3 つ目のメソッド (3) を呼び出すメソッド (1) を呼び出すと、Laravel アプリは (1) から戻ったときにのみビューを受け取ります。

そのため、最後のリターンを追加すると機能しました。

次のようなことができます。

echo Response::view(...);
die;

うまくいく場合もありますが、

しかし、これは本当に悪いことです。単にテストしているだけでない限り、これを行わないでください。

Laravelはすべてを閉じて必要なものをフラッシュすることはできず、アプリケーションやサーバーさえも危険にさらす可能性があるためです.

于 2013-09-24T20:13:17.483 に答える