Im передаёт данные в мое лезвие с return View::make('blog', $posts);
и в моем представлении @foreach ($posts as $post)
я пытаюсь запустить @foreach ($posts as $post)
Я @foreach ($posts as $post)
об ошибке, в котором указано, что $posts
не задано.
Мой вопрос: как будет вызываться массив $posts
?
Вы можете передавать данные в представление с with
метода with
.
return View::make('blog')->with('posts', $posts);
Вероятно, стоит упомянуть, что с Laravel 5 передача данных в представление теперь выполняется следующим образом:
return view("blog", ["posts"=>$posts]);
Документация доступна здесь .
Вы также можете передать массив в качестве второго аргумента после имени шаблона представления, вместо того, чтобы сгруппировать кучу методов ->with()
.
return View::make('blog', array('posts' => $posts));
Или, если вы используете PHP 5.4 или выше, вы можете использовать гораздо более приятный синтаксис «коротких» массивов:
return View::make('blog', ['posts' => $posts]);
Это полезно, если вы хотите вычислить массив в другом месте. Например, если у вас есть куча переменных, которые каждый контроллер должен передать в представление, и вы хотите объединить это с массивом переменных, который уникален для каждого конкретного контроллера (например, с помощью array_merge
), вы можете вычислить $variables
(который содержит массив!):
return View::make('blog', $variables);
(Я сделал это с моей головы: дайте мне знать, если ошибка синтаксиса поскользнулась …)
Если вы хотите передать только одну переменную для просмотра, вы можете использовать
В контроллере
return view('blog')->withTitle('Laravel Magic method.');
В поле зрения
<div> Post title is {{$title}}. </div>
Если вы хотите передать несколько переменных для просмотра, вы можете использовать
В контроллере
return view('blog')->withTitle('Laravel magic method')->withAuthor('Mister Tandon');
В поле зрения
<div> Post title is {{$title}}.Author Name is {{$author}} </div>
use TCG\Voyager\Models\Jobtype; class FormController extends Controller { public function index() { $category = Jobtype::all(); return view('contact', compact('category')); } }
контроллер:
use App\your_model_name; funtion index() { $post = your_model_name::all(); return view('index')->with('this_will_be_used_as_variable_in_views',$post); }
индекс:
<h1> posts</h1> @if(count($this_will_be_used_as_variable_in_views)>0) @foreach($this_will_be_used_as_variable_in_views as $any_variable) <ul> <p> {{$any_variable->enter_table_field}} </p> <p> {{$any_variable->created_at}} </p> </ul> @endforeach @else <p> empty </p> @endif
Надеюсь это поможет! 🙂
Вы также можете сделать то же самое по-другому,
Если вы используете PHP 5.5 или последний, вы можете сделать это, как следует,
return view(index, compact('data1','data2')); //as many as you want to pass
<div> You can access {{$data1}}. [if it is variable] </div> @foreach($data1 as $d1) <div> You can access {{$d1}}. [if it is array] </div> @endforeach
Таким же образом вы можете получить доступ ко всей переменной, которую вы передали в компактной функции.
Надеюсь, поможет 🙂
Вы можете передавать данные в представление с помощью метода with.
return view('greeting', ['name' => 'James']);