Php SilverStripe 3.1+;动态创建页面重定向
我有一个页面类型“ProductPage”,它有导航到的选项卡,如下所示: /ProductPageUrlSegment/?选项卡=视频 /ProductPageUrlSegment/?选项卡=音频 /ProductPageUrlSegment/?选项卡=照片 我希望在创建每个新产品页面时创建重定向,这样,如果您导航到/ProductPageUrlSegment/video,它将转到/ProductPageUrlSegment/?tab=video 所有选项卡都是相同的。我不清楚我应该使用路由还是重定向 我有一个链接到父页面的另一个项目的功能Php SilverStripe 3.1+;动态创建页面重定向,php,redirect,url-rewriting,silverstripe,Php,Redirect,Url Rewriting,Silverstripe,我有一个页面类型“ProductPage”,它有导航到的选项卡,如下所示: /ProductPageUrlSegment/?选项卡=视频 /ProductPageUrlSegment/?选项卡=音频 /ProductPageUrlSegment/?选项卡=照片 我希望在创建每个新产品页面时创建重定向,这样,如果您导航到/ProductPageUrlSegment/video,它将转到/ProductPageUrlSegment/?tab=video 所有选项卡都是相同的。我不清楚我应该使用路由还
public function Link() {
return $this->Parent()->Link() . '#' . $this->URLSegment;
}
我的应该是这样的:
public function LinkVideo() {
return $this->Link()->'/?=video' . '#' . $this->URLSegment->'/video';
}
我不知道如何解决这个问题,因此任何指导都值得赞赏。这将通过将URL作为一个操作处理,然后重定向到同一页面,但设置get变量来实现上述目标
class ProductPage extends Page {
}
class ProductPage_Controller extends Page_Controller {
private static $allowed_actions = array(
'video',
'audio',
'photos',
);
public function video() {
$this->redirect($this->Link().'?tab=video');
}
public function audio() {
$this->redirect($this->Link().'?tab=audio');
}
public function photos() {
$this->redirect($this->Link().'?tab=photos');
}
}
这将通过将URL作为一个操作处理,然后重定向到同一个页面,但使用get变量set
class ProductPage extends Page {
}
class ProductPage_Controller extends Page_Controller {
private static $allowed_actions = array(
'video',
'audio',
'photos',
);
public function video() {
$this->redirect($this->Link().'?tab=video');
}
public function audio() {
$this->redirect($this->Link().'?tab=audio');
}
public function photos() {
$this->redirect($this->Link().'?tab=photos');
}
}
谢谢你的回复!不幸的是,我遇到了这个错误:“尝试打开页面时发生了太多重定向”页面也立即尝试转到“/?tab=video”它只需要转到产品URL,然后才能导航选项卡,并且只有在输入/videos等时才重定向。您的答案适用于其他页面,但不是为我的产品页,所以我必须有东西阻止它工作。。。我接受了你的答案,因为它确实起作用。结果表明,我案例中的一个操作“视频”与我的一个$has_许多关系和网格字段匹配,并且似乎存在冲突,重命名该操作使所有操作都起作用,或者我想我可以更改关系。感谢回复!不幸的是,我遇到了这个错误:“尝试打开页面时发生了太多重定向”页面也立即尝试转到“/?tab=video”它只需要转到产品URL,然后才能导航选项卡,并且只有在输入/videos等时才重定向。您的答案适用于其他页面,但不是为我的产品页,所以我必须有东西阻止它工作。。。我接受了你的答案,因为它确实起作用。结果表明,我案例中的一个动作“视频”与我的一个$has_许多关系和网格字段相匹配,并且似乎存在冲突,重命名该动作使所有动作都起作用,或者我想我可以更改关系。