繁体   English   中英

将变量传递给Laravel 4中不同控制器的视图

[英]Passing a variable to a view from a different controller in Laravel 4

我正在Laravel 4中建立一个简单的投票申请,候选人将被投票。 我有两个实体候选人和投票人,有一对多的关系。 当有人点击按钮时,我会获得候选人的id并将其存储在只有一个candidate_id字段的投票表中。 我有一个名为votesuccessVoteController函数,看起来像这样

$vote = new Vote;
$candidate_id =Input::get('name');
$candidate = Candidate::find($candidate_id);
$vote = $candidate->votes()->save($vote);
$count = DB::table('votes')->where('candidate_id','==','$candidate_id')->count();

Session::flash('message', 'Successfully Cast your vote!');
return Redirect::to('voteresults')->with('count',$count);

从上面我有另一个名为voteresults VoteController函数,我将其传递给所有候选人

$candidates = Candidate::all();
return View::make('votes.voteresults',['candidates'=>$candidates]);

我将投票存储为行,我想通过计算行来计算投票数,因此这段代码

$count = DB::table('votes')->where('candidate_id','==','$candidate_id')->count();

我试图访问所有候选人信息以及他们从名为voteresults的视图中获得的投票数量,看起来像这样

<tbody>
@foreach($candidates as $key => $value)
    <tr>
        <td><img src="{{$value->avatar->url('thumb')}}"    alt="..."></td>
        <td>{{ $value->name }}</td>
        <td>{{ $value->manifesto }}</td>
        <td>
            {{ $count }}
        </td>
    </tr>
@endforeach
</tbody>

我试图将$count变量传递给视图,以便我可以捕获候选人的投票数。 我不知道它是否可以这样做或有更好的方法来做它。当我尝试运行这个我得到undefined variable count任何指导是受欢迎的。

如果我得到你的正确,你想从你的控制器传递两个不同的东西(候选人和选票)给你的观点?

控制器:

    $candidates = Candidate::all();
    $count = DB::table('votes')->where('candidate_id','=','$candidate_id')->count();
    return View::make('votes.voteresults')->with('candidates', $candidates)->with('count',$count);

视图:

<tbody>
@foreach($candidates as $key => $value)
    <tr>
        <td><img src="{{$value->avatar->url('thumb')}}"    alt="..."></td>
        <td>{{ $value->name }}</td>
        <td>{{ $value->manifesto }}</td>
        <td>
            {{ $count }}
        </td>
    </tr>
@endforeach
</tbody>

请参阅此文档: 视图

我相信您遇到的一个问题是,在$count查询的标准范围内,您的$candidate_id变量在单引号内。 我没有测试,但尝试下面的代码。

$vote = new Vote;
$candidate_id =Input::get('name');
$candidate = Candidate::find($candidate_id);
$vote = $candidate->votes()->save($vote);

Session::flash('message', 'Successfully Cast your vote!');
return Redirect::to('voteresults');

Candidate模型添加类似于此的方法:

 public function getTotalVotesAttribute()
 {
    return $this->hasMany('Vote')->whereCandidateId($this->id)->count();

 }

在您的VoteResults控制器中:

$candidates = Candidate::all();
return View::make('votes.voteresults',['candidates'=>$candidates]);

在你的voteresults视图中:

<tbody>
@foreach($candidates as $key => $value)
    <tr>
        <td><img src="{{$value->avatar->url('thumb')}}"    alt="..."></td>
        <td>{{ $value->name }}</td>
        <td>{{ $value->manifesto }}</td>
        <td>
            {{ $value->total_votes }}
        </td>
    </tr>
@endforeach
</tbody>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM