如何从视图中调用控制器 - Laravel

Jim*_*988 4 laravel

我有一个列出时间表的视图.

在该视图中,每个时间表都有一个可交付的字段...我有一个DeliverableController,它有一个动作"DropdownList",它调用模型并获取可交付成果列表并将它们推送到可交付的视图(只创建一个下拉框) .

当我循环遍历我的时间表时,我想得到DeliverableController/DropdownList的响应,并把它放在我的可交付字段应该在时间表上.

  • A)有一种方法可以从视图中获取控制器的响应
  • B)有没有办法从控制器方法中获取控制器的响应,以便我可以将结果推送到视图?

到目前为止我的代码是:

DeliverableController:

class DeliverableController extends BaseController {   
    private $deliverableRepository;

    function __Construct( IDeliverableRepository $deliverableRepo )
    {
        $this->deliverableRepository = $deliverableRepo;
    }

    ...

    public /*  */ function DropdownList()
    {        
        $deliverables = $this->deliverableRepository->Deliverables(); 
        return View::make( 'Deliverable/_DropdownList', array( "Model" => $deliverables ) );
    }
}
Run Code Online (Sandbox Code Playgroud)

Deliverables/_DropdownList查看:

<?php
    foreach( $Model as $item )
    {
?>
    <select name="">
        <option value = "<?php echo $item->ID; ?>"><?php echo $item->Title; ?></option>
    </select>    
<?php
    }
?>
Run Code Online (Sandbox Code Playgroud)

时间表控制器:

class TimesheetController extends BaseController {      
    private $timesheetRepository;

    function __Construct( ITimesheetRepository $timesheetRepo )
    {
        $this->timesheetRepository = $timesheetRepo;
    }

    ...

    // [HttpGET]
    public /*  */ function GetCreate()
    {       
        return View::make( 'Timesheet/Create' );
    }   

    // [HttpPOST]
    public /*  */ function PostCreate()
    { 
        // To do
    }    
}
Run Code Online (Sandbox Code Playgroud)

时间表/创建

@extends( 'layout' )

@section( 'Styles' )
    <link href="<?php echo Request::root(); ?>/Styles/Timesheet.css" rel="stylesheet">
@stop

@section( 'Title' )
    Create timesheets
@stop

@section( 'Content' )

<form role="form">
    <table id="TimesheetTable" class="table">
        <thead>
            <tr>
                <th>Project/Deliverable</th>
                ...                
            </tr>
        </thead>
        <tfoot>
            <tr>
                <td></td>
                ...
            </tr>
        </tfoot>
        <tbody>
            <?php
                for( $a = 0; $a < 18; $a++ )
                {
            ?>
                    <tr id='row<?php echo $a; ?>'>
                        <td><?php /* Get response from DeliverableController/DropdownList */ ?></td>...                    
                    </tr>
            <?php
                }
            ?>
        </tbody>
    </table>
@stop

@section( 'Scripts' )
    <script src="<?php echo Request::root(); ?>/Scripts/Timesheet.js"></script>
@stop
Run Code Online (Sandbox Code Playgroud)

注意来自DeliverableController/DropdownList/*Get响应*/

Kor*_*ieh 9

如果要从视图中调用控制器,可以使用IOC容器

    App::make(//ControllerName)->//methodName(//parameters);
Run Code Online (Sandbox Code Playgroud)

例:

    App::make("UserController")->displayUsers(array('page_id' => 55));
Run Code Online (Sandbox Code Playgroud)