【问题标题】:cakephp 3 url in controller控制器中的cakephp 3 url
【发布时间】:2016-02-23 04:26:37
【问题描述】:

我必须从控制器发送 url 以使用 json 进行查看。当我使用 $this->Html->link 或 $this->Url->build for link 时不行。我怎样才能将链接发送到 json..

使用 Cake\View\Helper\UrlHelper;在顶部

foreach($schedules as $s) :
            $start=$s->start_at;
            $end=$s->finished_at;

   $link= $this->Url->build([ 
                                    'controller' => 'Bookings','action' => 'makebooking',
                                    'comid' => 1,
                                    'comslug' =>'Moe Moe',
                                    'sevid'=>2,
                                    'sevslug'=>'face washing',
                                    'sid'=>$s->id,
                                    'start'=>$start,
                                    'end'=>$end
                                    ]); 
            $out[]=array(
                'id'=>$s->id,
                'title'=>'( '.$s->start_at.'-'.$s->finished_at.' )'.$s->name,
                'url'=>$link,
                'start'=>strtotime($s->start_at).'000',
                'class'=>'event-important'

                );
         endforeach;


         echo json_encode(array('success'=>1,'result'=>$out));exit;

错误:在非对象上调用成员函数 build() 我是

【问题讨论】:

  • 你定义了你的模型Url吗??

标签: php cakephp-3.x


【解决方案1】:

使用此代码在应用程序的任何位置生成 url:

use Cake\Routing\Router;

    $link =  Router::url([ 
                                        'controller' => 'Bookings','action' => 'makebooking',
                                        'comid' => 1,
                                        'comslug' =>'Moe Moe',
                                        'sevid'=>2,
                                        'sevslug'=>'face washing',
                                        'sid'=>$s->id,
                                        'start'=>$start,
                                        'end'=>$end
                                        ]);

要生成完整的 URL,请将第二个参数传递为 TRUE。见下面的例子:

 $fullLink =  Router::url([ 
                                            'controller' => 'Bookings','action' => 'makebooking',
                                            'comid' => 1,
                                            'comslug' =>'Moe Moe',
                                            'sevid'=>2,
                                            'sevslug'=>'face washing',
                                            'sid'=>$s->id,
                                            'start'=>$start,
                                            'end'=>$end
                                            ],TRUE);

我没有测试过上面的代码,但我相信它会起作用。如果它不起作用,请告诉我。

【讨论】:

  • "url":"http:\/\/localhost\/bookingsev\/company\/1-萌萌\/service\/2-洗脸\/booking\/1-@2 \/20\/16, 12:00 PM-2\/20\/16, 1:00 PM是url输出。
  • 恭喜它成功了。现在你应该投票赞成答案。有关路由的更多信息,请访问:book.cakephp.org/3.0/en/development/routing.html
【解决方案2】:

您也可以导入 HtmlHelper 类并在您的控制器中使用它

use Cake\View\Helper\HtmlHelper; 
....
public function register() {
    $html = new HtmlHelper(new \Cake\View\View());
    $homeLink = $html->link('Home', ['controller' => 'Pages', 'action' => 'home', '_full' => true]);
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    相关资源
    最近更新 更多