【发布时间】:2021-06-24 06:40:08
【问题描述】:
您好,我正在使用 laravel 和 livewire,我正在尝试为聊天室解决此错误,有人可以帮我吗? :
Illuminate\Contracts\Container\BindingResolutionException 无法 解决类中的依赖项 [Parameter #0 [ $message ]] 应用\Http\Livewire\ChatRoom
这是LettresController.php
中的相关函数 public function ChoisirLettresAléatoiresDuReserve(){
// Messages de la btcom
$message=Message::all();
$user_id = auth()->id();
// check if there is game in the request
if (!request()->has('game')) {
return redirect()->route('game.select');
}
// getting game ID and fetching game
$game = $this->get_game_by_id((int)request()->get('game'));
// check if the game has finished or is still running
if ($this->check_game_finished($game)) {
$this->update_game_timer($game, $user_id);
// user has used up his chevalet, so we need to update with new
$position = $this->user_chevalet_position($game, $user_id);
if ($position === null) {
// user might have entered a game id but was never part of the game
return redirect()->route('game.select');
}
// get if the player has no more playing piece left
$user_chevalet = $this->get_user_chevalet($game, $user_id, $position);
$valeur = $this->generate_valeur($user_chevalet);
$game = $this->get_game_by_id((int)request()->get('game'));
return view('jeu')->with(compact('game', 'valeur', 'position','message'));
}
return redirect()->route('game.ended')->with(['Resultat' => 'Game Ended']);
}
我正在使用 livewire livewire.ChatRoom.php
<?php
namespace App\Http\Livewire;
use App\Traits\GameTraits;
use Livewire\Component;
use Carbon;
class ChatRoom extends Component
{
public $newMessage;
public $photo;
public $messages;
public function mount($message){
// dd($message);
$this->messages = $message;
}
public function addMessage($message)
{
if($this->newMessage==''){
return;
}
array_unshift($this->messages,[
'contenu' => $this->newMessage,
'created_at' => \Carbon\Carbon::now()->diffForHumans(),
'user_id'=> 'Ness'
]);
}
public function render()
{
return view('livewire.chat-room');
}
}
chat-room.blade.php
<div class="container" id="positionbt">
<div class="row">
<div class="col-md-8 col-md-offset-2 bootstrap snippets bootdeys" >
<div class="widget-container scrollable list rollodex">
<div class="heading" id="btc">
<span class="fa"></span> Boite de communication
</div>
<div class="panel-body">
<ul class="chat">
<li class="left clearfix"><span class="chat-img pull-left" >
<img width="40" height="40" src="{{ asset('img/scrabblelogo.png') }}" alt="User Avatar" class="img-circle" />
</span>
<div class="chat-body clearfix" class="text">
<div class="header">
<strong class="primary-font">!Aide</strong>
</div>
<div class="text">
<p>
Bonjour! Afin de pouvoir effectuer les tâches ci-dessous, vous pouvez utiliser ces 5 commandes:<br>
<b>1. Placer un mot:</b> !placer ligne colonne (h|v) mot<br>
<b>2. Changer une lettre:</b> !changer lettre<br>
<b>3. Passer le tour à un autre joueur:</b> !passer<br>
<b>4. Afficher le menu d'aide:</b> !aide<br>
<b>5. Quitter menu d'aide:</b> !quitter<br>
</p>
</div>
</div>
</li>
@foreach ($messages as $message)
<li class="left clearfix"><span class="chat-img pull-left">
<img width="40" height="40" src="{{ $message->post_by->photo }}" alt="User Avatar" class="img-circle" />
</span>
<div class="chat-body clearfix">
<div class="header">
<strong class="primary-font">{{ $message->post_by->nick }}</strong> <small class="pull-right text-muted">
<span class="glyphicon glyphicon-time"></span>{{ $message->created_at }}</small>
</div>
<p>
{{ $message->contenu }}
</p>
</div>
</li>
@endforeach
</div>
<form class="panel-footer" id="msg" wire:submit.prevent="addMessage">
<div class="input-group">
<input id="btn-input" type="text" class="form-control input-sm" placeholder="Tapez votre message ici..." wire:model="newMessage"/>
<span class="input-group-btn" style="padding-top: 8px;">
<button class="btn btn-primary btn-sm" id="btn-chat" type="submit">
Envoyer</button>
</span>
</div>
</form>
</div>
</div>
</div>
</div>
我将它包含在 jeu.blade.php
中<div class="btcom">
<livewire:chat-room :message="$message"/>
</div>
我在 web.php 中的根目录如下:
Route::get('/jeu', [App\Http\Controllers\LettresController::class, 'ChoisirLettresAléatoiresDuReserve'])->name('jeu');
【问题讨论】:
-
Route::get('/jeu/{message}', [App\Http\Controllers\LettresController::class, 'ChoisirLettresAléatoiresDuReserve'])->name('jeu'); ???
-
是的,它甚至在添加实时聊天之前和在函数 ChoisirLettresAléatoiresDuReserve() 中压缩“消息”之前就可以工作,但问题不在于路由,而在于绑定,我正在寻找如何做绑定,因为我仍然没有找到任何可行的解决方案
标签: php laravel laravel-8 laravel-livewire