Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 31.01.2016 09:53:29

Ошибка нету переменой

Вот пытаюсь выбрать меню назавние меню и ссылки на них в heder.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class Heder extends Controller
{
    public function Menu()
    {
        $menu = Menu::all()->where('publish', '1');

        return view('travel/heder', [$menu => 'menu']);

    }
}

в представление возникает ошибка что переменой $menu нету
Модель создал с именнем Menu

Не в сети

#2 31.01.2016 11:49:45

duster
Откуда: Мельбурн
Сообщений: 148

Re: Ошибка нету переменой

Неправильно передается переменная $menu, должно быть:

return view('travel.header', ['menu' => $menu]);

Так как переменная все равно нигде не используется больше, можно сделать все в одну строку:

return view('travel.header', ['menu' => Menu::wherePublish(1)->get()]);

После all() - у Вас уже запрос SQL выполнен и далее все происходит на коллекции (в PHP), что будет медленнее. Лучше выборку сделать сразу

Не в сети

#3 31.01.2016 12:48:07

Re: Ошибка нету переменой

duster пишет:

Неправильно передается переменная $menu, должно быть:

return view('travel.header', ['menu' => $menu]);

Так как переменная все равно нигде не используется больше, можно сделать все в одну строку:

return view('travel.header', ['menu' => Menu::wherePublish(1)->get()]);

После all() - у Вас уже запрос SQL выполнен и далее все происходит на коллекции (в PHP), что будет медленнее. Лучше выборку сделать сразу

Сделал как вы сказали вот все равно ошибка
ErrorException in heder.php line 23:
Undefined variable: menu
Контролер

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Menu;

class Heder extends Controller
{
    public function Menu()
    {
        return view('travel.header', ['menu' => Menu::wherePublish(1)->get()]);

    }
}

Вид

        <?php foreach($menu as $item): ?>
		<li><a href="#"><?=$item['name'];?></a></li>
        <?php endforeach; ?>

Не в сети

#4 31.01.2016 13:10:48

duster
Откуда: Мельбурн
Сообщений: 148

Re: Ошибка нету переменой

А покажите 23-ю строку из heder.php? Тут же похоже, что не шаблон жалуется

Не в сети

#5 31.01.2016 15:15:54

Re: Ошибка нету переменой

вот строка 23
<?php foreach($menu as $item): ?>
<li><a href="#"><?=$item['name'];?></a></li> <?php endforeach; ?>

Не в сети

#6 31.01.2016 17:30:22

Re: Ошибка нету переменой

НЕ как не могу понять в чем проблема, создал модель Menu.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Menu extends Model
{
    //
}

Создал контроле Heder.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Menu;

class Heder extends Controller
{
    public function Menu()
    {
        return view('travel.header', ['menu' => Menu::wherePublish(1)->get()]);
        
    }
}

И вид heder.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
	<link rel="stylesheet" type="text/css" href="<?=asset('travel/css/style.css');?>" />
	<link rel="stylesheet" type="text/css" href="<?=asset('travel/css/default0.css');?>" media="all" />
	
    <script src="<?=asset('travel/js/jquery-1.js'); ?>"></script>
    <script src="<?=asset('travel/js/jquery00.js'); ?>"></script>
    <script src="<?=asset('travel/js/init0000.js'); ?>"></script>
<title><?=$title; ?></title>
</head>

<body>
<div class="main">
	<div class="head">
		<h2>Выбери своё <br />Путешествие</h2>
		<a href="/"><span>C</span>hooce <span>T</span>ravel</a>
	</div>
	
	<div class="content-main">
	<ul class="menu">
        <?php foreach($menu as $item): ?>
		<li><a href="#"><?=$item['name'];?></a></li>
        <?php endforeach; ?>
		<li><a href="#">Автор</a></li>
		<li><a href="#">Контакты</a></li>
		<form class="search-main" action="" method="">
			<input class="serch-txt" type="text" name="search" />
			<input class="serch-btn" type="image" src="<?=asset('travel/images/serach-btn.jpg');?>" />
		</form>
	</ul>	
	
	<div id="slider">
		<ul id="cycle">
			<li><img src="<?=asset('travel/images/galery.jpg');?>" height="266" width="927" alt="Slides" /></li>
			<li><img src="<?=asset('travel/images/kolizey.jpg');?>" height="266" width="927" alt="Slides" /></li>
			<li><img src="<?=asset('travel/images/piramide.jpg');?>" height="266" width="927" alt="Slides" /></li>
			<li><img src="<?=asset('travel/images/galery.jpg');?>" height="266" width="927" alt="Slides" /></li>
			<li><img src="<?=asset('travel/images/kolizey.jpg');?>" height="266" width="927" alt="Slides" /></li>
			<li><img src="<?=asset('travel/images/piramide.jpg');?>" height="266" width="927" alt="Slides" /></li>
		</ul>
		<div id="cyclePager"></div>
	</div> 

и все равно выдает ошибку
ErrorException in heder.php line 23: Undefined variable: menu

Не в сети

#7 31.01.2016 19:03:21

Re: Ошибка нету переменой

У меня точно такая же проблема, вот тему создавал: https://laravel.ru/forum/viewtopic.php?id=1334 в ней есть решение.
Но вопрос остаётся актуальным, так-как решение не совсем правильное.

Не в сети

#8 01.02.2016 04:08:49

duster
Откуда: Мельбурн
Сообщений: 148

Re: Ошибка нету переменой

Должен же быть файл resources/views/travel/header.blade.php и в нем должет быть этот цикл foreach

Не в сети

#9 01.02.2016 09:27:31

Re: Ошибка нету переменой

duster пишет:

Должен же быть файл resources/views/travel/header.blade.php и в нем должет быть этот цикл foreach

Да я не использую шаблонизатор blade

Не в сети

#10 01.02.2016 09:28:35

Re: Ошибка нету переменой

Killing пишет:

У меня точно такая же проблема, вот тему создавал: https://laravel.ru/forum/viewtopic.php?id=1334 в ней есть решение.
Но вопрос остаётся актуальным, так-как решение не совсем правильное.

Да хочеться понять вчем именно проблема, так как первый раз вижу что такое возникает, что переменая $menu не создаеться

Не в сети

Подвал раздела