모든 뷰에 대해 BaseController에서 마스터 레이아웃의 헤더까지 일부 변수를 공유합니다. 이것은 지금까지 만든 모든 컨트롤러를 통해 모든 뷰에서 작동했습니다.Laravel View :: 하나의 컨트롤러에서만 정의되지 않은 변수를 공유
Undefined variable: basket_lines (View: /var/www/vhosts/lsigifts.co.uk/app/views/layouts/master.blade.php) (View: /var/www/vhosts/lsigifts.co.uk/app/views/layouts/master.blade.php)
master.blade.php보기는 다른 페이지에이 오류를 포기하지 않습니다
이
는 오류가 내가 얻을 수있다.내 BaseController : 내가 말하는 것처럼
class BaseController extends Controller {
public function __construct()
{
// basket stuff to share on all templates
// how many different products are in there?
$basket_lines = Cart::totalItems(true);
View::share('basket_lines', $basket_lines);
// what's the total ex vat?
$basket_total_exvat = number_format(Cart::total(false), 2);
View::share('basket_total_exvat', $basket_total_exvat);
// what's the total inc vat?
$basket_total_vat = number_format(Cart::total(), 2);
View::share('basket_total_vat', $basket_total_vat);
}
/**
* Setup the layout used by the controller.
*
* @return void
*/
protected function setupLayout()
{
if (! is_null($this->layout))
{
$this->layout = View::make($this->layout);
}
}
}
이 문제없이 모든보기에 물건을 공급한다. 그러나,이 컨트롤러는 그것을 허용하지 않습니다 :
경로 :
Route::controller('search', 'SearchController');
SearchController : 나는 시간 동안 솔루션을 사방 보았다
class SearchController extends \BaseController {
/**
* @var The SOLR client.
*/
protected $client;
/**
* Constructor
**/
public function __construct()
{
// get config
$solr_config = Config::get('solr');
// create a client instance
$this->client = new \Solarium\Client($solr_config);
}
public function getIndex()
{
/*$ping = $this->client->createPing();
try {
$result = $this->client->ping($ping);
return var_dump($result);
} catch (Solarium\Exception $e) {
return 'hmmm';
}*/
if(Input::has('q')){
// create the query
$query = $this->client->createSelect();
// set the string
$query->setQuery('%P1%', array(Input::get('q')));
// execute the query
$resultset = $this->client->select($query);
// create the view
return View::make('search.index', [
'q' => Input::get('q'),
'resultset' => $resultset
]);
}
return 'No search term';
}
}
는 다른 방식으로 뷰를 만드는 시도를, 이 공유 변수에 테스트 값을 넣으려고했지만 아무 쓸모가 없습니다.
이보기와 다른보기 사이의 유일한 차이점은 get
보기 (post
보기가 아니라)입니다. 그러나 이것이 왜 아무 것도 바뀌지 않는 이유는 발견하지 못했습니다. Laravel docs는 "모든 뷰에서 데이터를 공유 할 수도 있습니다"라고 말합니다.
어떻게이보기에이 변수들을 공유 할 수 있습니까?
바구니가 비어 있거나 설정되지 않으면 어떻게됩니까? 그게 문제가 될 수 있습니까? – Laurence
비어있을 때,보기는 여전히 다른 페이지에서 작동합니다. 단지 비어 있다고 알려줍니다! –
컨트롤러에서 수동으로 변수를 정의하고 뷰에 수동으로 연결하면 작동합니까? – Laurence