将数据从控制器传递到视图laravel 5

时间:2015-09-29 14:02:26

标签: php laravel model-view-controller laravel-5 blade

控制器

public function codingPuzzleProcess()
{

    $word     = Input::get('word');
    $length   = strlen($word);


    return Redirect::to('/coding-puzzle')
        ->with('word', $word )
        ->with('length', $length )
        ->with('success','Your word was submit succesfully!');

}

查看

我尝试在我的刀片视图中访问这些数据

{!!$word or '' !!} | {!!$length or '' !!}

我不知道为什么我什么也没打印。我确定我的

$word = 'love' with length of 4

对此的任何提示/建议将不胜感激!

3 个答案:

答案 0 :(得分:3)

重定向没有将控制传递给视图,它将控制传递给客户端,然后客户端向应用程序发出另一个单独的请求。

请求将由控制器处理,该控制器可以将数据发送到我认为您正在尝试的视图。但是,当您重定向并传递这样的数据时,数据将不会在当前范围内神奇地可用。它将在会话闪存数据中神奇地可用:

JAVA_HOME="/usr/lib/jvm/java-8-oracle"
export JAVA_HOME

JAVA_OPTS="-Xmx4096m -Xms512m -server"
export JAVA_OPTS

CATALINA_HOME="/opt/tomcat"
export CATALINA_HOME

Manual

答案 1 :(得分:1)

首先,您不需要重定向,您可以使用返回视图语句并发送数据,如下所示:

return view('coding-puzzle', ['word' => $word, 'lenght' => $lenght, 'success' => 'Your word was submit succesfully!']);

然后在您的视图中,您可以按照您想要的方式访问这些变量: {{$word}}(" scaping"变量值或{!!$word!!}不要改变它。

现在,你真的需要进行重定向,这样你就无法在" normal"中访问这些变量。方式,您需要通过会话访问它,如下所示:

@if(Session::has('word'))
    {{Session::get('word')}}
@endif

和其他人一样。

希望它有所帮助。

让我邀请您参加Laravel Step-by-Step课程,以获得更深入的知识:Learn Laravel Step By Step

祝福。

答案 2 :(得分:1)

您对重定向响应的with()方法与视图类的Illuminate\Http\RedirectResponse方法感到困惑。虽然相似,但他们不会这样做。 Illuminate\View\View中定义的第一个会将值传递给会话。第二个,在session()定义,将值传递给视图。

由于您要返回重定向响应,因此您的值不会直接作为视图中的变量访问。您需要使用old() if(ContextCompat.checkSelfPermission(getBaseContext(), "android.permission.READ_SMS") == PackageManager.PERMISSION_GRANTED) { create an outlet从您的观看中访问这些值。