С помощью метода контроллера я отправляю $notifications на главный экран и отображаю уведомления в заголовке своего веб-сайта.
Представления профиля расширяют домашнее представление, и я также хотел отображать уведомления в представлении профиля.
Но он генерирует ошибку неопределенной переменной $ notifications, когда я запрашиваю представление профиля.
Я думаю, что одним из решений является отправка $notifications при возврате представления профиля из метода контроллера, но на веб-сайте есть много представлений, в которых я хотел бы показать вкладку уведомлений, поэтому я правильно думаю.
Я вернул домашний вид следующим образом
return view('home')->with(['unseen_notification_counter'=>$unseen_notification_counter,'notifications'=>$notifications]);
вот код в домашнем представлении в разделе заголовка
<ul class = "dropdown-menu" id = "notificationlist">
@foreach($notifications as $notification)
<li>
<a href = "{{route('user.profile',$notification->id)}}" class = "dropdown-item">
<img src = "http://localhost/webproject/public/user_images/{{$notification->image}}" class = "img-thumbnil" width = "20px" height = "20px">
<strong>{{$notification->username}}</strong>
<span style = "white-space: initial;">sent you a friend request.</span>
</a>
</li>
@endforeach
</ul>
Можете ли вы показать, на что вы расширяете свой обзор?
Можете ли вы показать, как вы тоже получаете уведомления (извините)?






Создайте BaseController и поделитесь данными оттуда следующим образом:
<?php
namespace App\Http\Controllers;
use View;
//You can create a BaseController:
class BaseController extends Controller {
public $dataVariable = "some data";
public function __construct() {
$anotherVariable = "more data";
$notifications = Notification::where('is_seen',0)->get(); // assuming this gets unseen notifications
$unseen_notification_counter = count($notifications);
View::share ( 'notifications', $notifications );
View::share ( 'unseen_notification_counter', $unseen_notification_counter );
View::share ( 'data_variable', $this->dataVariable );
View::share ( 'another_variable', $this->anotherVariable );
}
}
Все контроллеры, расширяющие BaseController, будут иметь доступ к данным. Сделайте что-нибудь вроде этого:
class DashboardController extends BaseController {
public function Index(){
return view('index'); // all the shared data is available in the view ($notifications and $unseen_notification_counter)
}
}
Надеюсь, что это работает.
Если вы хотите передать одни и те же данные в несколько представлений в своем приложении, вы можете использовать Посмотреть композиторов
Например. в методе boot() вашего AppServiceProvider у вас будет что-то вроде:
public function boot()
{
view()->composer(['home', 'profile'], function ($view) {
$notifications = \App\Notification::all(); //Change this to the code you would use to get the notifications
$view->with('notifications', $notifications);
});
}
Затем вы просто добавляете в массив разные имена файлов лезвий (как в случае с маршрутом).
В качестве альтернативы вы можете доля уведомления со всеми представлениями:
public function boot()
{
$notifications = \App\Notification::all(); //Change this to the code you would use to get the notifications
view()->share('notifications', $notifications);
}
Как вы передаете уведомления представлениям?