首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Illuminate\Contracts\Container\BindingResolutionException

Illuminate\Contracts\Container\BindingResolutionException
EN

Stack Overflow用户
提问于 2021-03-27 16:47:37
回答 1查看 963关注 0票数 0

你好,我正在和laravel和livewire一起工作,我正在为一个聊天室解决这个错误,有人能帮我一下吗?:

Illuminate\Contracts\Container\BindingResolutionException

无法解决类App\Http\Livewire\聊天室中的依赖关系[参数#0 $message ]

这是LettresController.php中的相关函数

代码语言:javascript
运行
复制
    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.ChatRoom.php livewire

代码语言:javascript
运行
复制
    <?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

代码语言:javascript
运行
复制
    <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

代码语言:javascript
运行
复制
<div class="btcom">
    <livewire:chat-room :message="$message"/>
</div>

我在web.php的根目录如下:

代码语言:javascript
运行
复制
    Route::get('/jeu', [App\Http\Controllers\LettresController::class, 'ChoisirLettresAléatoiresDuReserve'])->name('jeu');
EN

回答 1

Stack Overflow用户

发布于 2021-03-27 18:34:49

好的,试着理解你所追求的目标,你可以这样处理,等我们用更好的方法去做之后

代码语言:javascript
运行
复制
return redirect()->route('jeu.message',['game'=> $game, 'valeur'=>$valeur, 'position' => $position,'message' => $message]);

在web.php中

代码语言:javascript
运行
复制
Route::get('/jeu/{message}', function($message){
  // dd($message);
  return view('jeu',['message'=>$message]);
})->name('jeu.message'); 

通过这种方式,您可以检查方法内部是否在加载此路由时传递消息值,并将其注入刀片中,这种方式可以由嵌套组件绑定

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66833804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档