2014-04-23 25 views
0

控制器::如何使用在多个视图中Laravel变量值

$states=$this->States->get_States(); 
$data=array('states'=>$states); 
echo View::make('frontend.list-property')->with('data', $data); 

列表property.blade.php :: //这是子图

@extends('layouts.frontend.frontend_login') 

@section('content') 
<select> 
    {{$states_drpdown}} //when I use this statement I am getting error 

</select> 
@stop 

frontend_login.blade.php//这是布局文件

<?php 
    $states_drpdown=''; 
    foreach ($data['states'] as $state): 
    $states_drpdown.='<option value="'.$state->sid.'">'.$state->statename.'</option>'; 
endforeach 
    ?> 
    <select> 
    {{$states_drpdown}} //I am getting list of options here 
    </select> 
    @yield('content') 

我得到以下错误,任何人都可以帮我出来。

Symfony \ Component \ Debug \ Exception \ FatalErrorException 

Method Illuminate\View\View::__toString() must not throw an exception 

回答

1
$data = array('states' => $this->States->get_States()); 
echo View::make('frontend.list-property', $data); 

假设$this->States->get_States()返回的选项的字符串,而不是一个数组?

<select> 
    {{$states}} 
</select> 

如果$this->States->get_States()返回一个数组,你可能只是这样做(无需<select>标签):

{{ Input::select('name-of-field', $states, Input::old('name-of-field')) }} 

考虑返回的观点,而不是呼应。

+1

我得到的选择,如果我使用这两种观点的foreach语句,但我想用循环只有一次,因为我结合观点。我理解你的答案。 –

2

您也可以在所有视图共享一个数据:

View::share('name', 'Steve'); 

你可以找到更多关于这个here

在你的情况下,尝试:(警告未经测试的代码

$states = $this->States->get_States(); 
$data = View::share('states', $states); 
return View::make('frontend.list-property'); 
+1

状态数组在两个视图中可用,但$ states_drpdown变量只在布局文件中不在列表属性视图中 –

+0

其他地方有其他错误。 – majidarif

相关问题