Как передать данные для просмотра в Laravel?

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']);