Подтвердить что ты не робот

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

Im передаёт данные в мое лезвие с return View::make('blog', $posts); и в моем представлении с лезвием. Я пытаюсь запустить @foreach ($posts as $post). Я получаю сообщение об ошибке $posts.

Мой вопрос: как будет вызываться массив $posts?

4b9b3361

Ответ 1

Вы можете передать данные в представление с помощью метода with.

return View::make('blog')->with('posts', $posts);

Ответ 2

Вероятно, стоит упомянуть, что начиная с Laravel 5, передача данных в представление теперь выполняется следующим образом:

return view("blog", ["posts"=>$posts]);

Или же:

return view("blog", compact("posts"));

Документация доступна здесь.

Ответ 3

Вы также можете передать массив в качестве второго аргумента после имени шаблона представления, вместо того чтобы навязать связку методов ->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);

(Я сделал это с моей головы: дайте мне знать, если синтаксическая ошибка проскользнула...)

Ответ 4

Если вы хотите передать только одну переменную для просмотра, вы можете использовать

В Контроллер

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>

Ответ 5

use TCG\Voyager\Models\Jobtype;

class FormController extends Controller
{
public function index()
{
   $category = Jobtype::all();
   return view('contact', compact('category'));

}
}
  • используйте вашу модель.
  • присвойте ему значение переменной
  • передать объект в представление Вот пример:

Ответ 6

Tips1:

Использование With(), это лучшая практика

return view('about')->withName('Author Willson')->withJob('Writer');
return View::make('home')->with(compact('about'))
return View::make('home')->with('comments', $comments);

Tips2:

Использование compact()

return view(about, compact('post1','post2'));

Tips3:

Используя вторые параметры:

return view("about", ["comments"=>$posts]);

Ответ 7

контроллер:

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

Надеюсь, это поможет!:)

Ответ 8

Вы также можете сделать то же самое по-другому,

Если вы используете 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

Точно так же вы можете получить доступ ко всей переменной, которую вы передали в компактной функции.

Надеюсь, это поможет:)

Ответ 9

Вы можете передавать данные в представление с помощью метода with.

return view('greeting', ['name' => 'James']);

Ответ 10

Вы также можете написать для передачи нескольких данных из вашего контроллера в представление

 return \View::make('myHome')
            ->with(compact('project'))
            ->with(['hello'=>$hello])
            ->with(['hello2'=>$hello2])
            ->with(['hello3'=>$hello3]);

Ответ 11

Вы можете использовать следующее для передачи данных для просмотра в Laravel:

public function contact($id) {
    return view('contact',compact('id'));
}

Ответ 12

Например, у вас есть массив с вашими данными.

$array1  =  $data;
$array2 = $data;

С вашего контроллера вы можете передать эту переменную используя compact. Вы можете передать столько массивов, сколько захотите.

return view('data.index',compact('array1','array2'));

Здесь data - папка в поле зрения, а index - файл с расширением index.blade.php.

В связи с этим вы можете назвать массивы, как это

@foreach ($array1 as $something)
   // some operation
@endforeach

Ответ 13

Вы также можете сделать это

$arr_view_data['var1'] = $value1;
$arr_view_data['var2'] = $value2;
$arr_view_data['var3'] = $value3;

return view('your_viewname_here',$arr_view_data);

И вы получаете доступ к этой переменной для просмотра как $var1, $var2, $var3

Ответ 14

Для любого человека, который думает, что это действительно утомительно в случае, когда у вас есть тонны переменных для передачи в представление или вы хотите, чтобы переменные были доступны для многих представлений одновременно, вот другой способ

В контроллере вы определяете переменные, которые вы хотите передать как global и приписываете значения этим переменным.

Пример global $variable; $variable = 1; global $variable; $variable = 1;

А теперь в представлении, на самом верху, просто

<?php global $variable;?>

Затем вы можете вызвать вашу переменную из любого места, например, в представлении

{{$variable}}

надеюсь, это поможет кому-то.