我想知道我应该怎么做。下面的控制器用于每个摔跤手的个人简介页面。下面是一个例子。
http://kansasoutlawwrestling.com/bio/kid-wonder现在如果你注意到有三个链接传记,摔跤,出场。
我有一个问题是这三个应该是不同的功能在这个控制器?
如果答案是肯定的,那么页面上的链接是否正确?
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Bio extends CI_Controller
{
function index($character = "jfkdlsjl")
{
//Config Defaults Start
$msgBoxMsgs = array();//msgType = dl, info, warn, note, msg
$cssPageAddons = '';//If you have extra CSS for this view append it here
$jsPageAddons = '';//If you have extra JS for this view append it here
$metaAddons = '';//Sometimes there is a need for additional Meta Data such in the case of Facebook addon's
$siteTitle = '';//alter only if you need something other than the default for this view.
//Config Defaults Start
//examples of how to use the message box system (css not included).
//$msgBoxMsgs[] = array('msgType' => 'dl', 'theMsg' => 'This is a Blank Message Box...');
/**********************************************************Your Coding Logic Here, Start*/
$activeTemplate = $this->sitemodel->getTemplate();
$footerLinks = $this->sitemodel->getFooterNav();
$bodyContent = "bio";//which view file
$bodyType = "main";//type of template
$this->data['activeTemplate'] = $activeTemplate;
$this->data['footerLinks']= $footerLinks;
$this->load->model('biomodel');
if($character !== "jfkdlsjl")
{
if((!empty($character))||(!isset($character))||(trim($character) !== '')||($character !== NULL))
{
$bioArray = $this->biomodel->getCharacterBio($character);
if ($bioArray == "empty")
{
$this->data['bioArray']= array();
}
else
{
if (($bioArray[0]->characters_statuses_id == 2)||($bioArray[0]->characters_statuses_id == 3)||($bioArray[0]->characters_statuses_id == 5))
{
$this->data['bioArray']= array();
}
else
{
$this->data['bioArray']= $bioArray;
$bioPagesArray = $this->biomodel->getBioPages();
$alliesArray = $this->biomodel->getCharacterAllies($bioArray[0]->id);
$rivalsArray = $this->biomodel->getCharacterRivals($bioArray[0]->id);
$quotesArray = $this->biomodel->getCharacterQuotes($bioArray[0]->id);
$this->data['bioPagesArray']= $bioPagesArray;
$this->data['alliesArray']= $alliesArray;
$this->data['rivalsArray']= $rivalsArray;
$this->data['quotesArray']= $quotesArray;
}
}
}
}
/***********************************************************Your Coding Logic Here, End*/
//Double checks if any default variables have been changed, Start.
//If msgBoxMsgs array has anything in it, if so displays it in view, else does nothing.
if(count($msgBoxMsgs) !== 0)
{
$msgBoxes = $this->msgboxes->buildMsgBoxesOutput(array('display' => 'show', 'msgs' =>$msgBoxMsgs));
}
else
{
$msgBoxes = array('display' => 'none');
}
if($siteTitle == '')
{
$siteTitle = $this->metatags->SiteTitle(); //reads
}
//Double checks if any default variables have been changed, End.
$this->data['msgBoxes'] = $msgBoxes;
$this->data['cssPageAddons'] = $cssPageAddons;//if there is any additional CSS to add from above Variable this will send it to the view.
$this->data['jsPageAddons'] = $jsPageAddons;//if there is any addictional JS to add from the above variable this will send it to the view.
$this->data['metaAddons'] = $metaAddons;//if there is any addictional meta data to add from the above variable this will send it to the view.
$this->data['pageMetaTags'] = $this->metatags->MetaTags();//defaults can be changed via models/metatags.php
$this->data['siteTitle'] = $siteTitle;//defaults can be changed via models/metatags.php
$this->data['bodyType'] = $bodyType;
$this->data['bodyContent'] = $bodyContent;
$this->load->view($activeTemplate[0]->short_name.'/index', $this->data);
}
}
/* End of file bio.php */
/* Location: ./application/controllers/bio.php */
编辑:当我在像上面的链接一样的个人简介页面时,我真的很关心个人简介页面的链接。
$route['bio/(:any)'] = "bio/index/$1";最好为这3个链接中的每一个都设置单独的控制器。
但是如果你不想,仍然想要链接/appearances/whatever
,这里是路由你需要保持它都在Bio控制器:
UPDATE -这仍然是一个糟糕的方法,但它应该可以。
if ($this->uri->segment(1) == 'bio') {
$route['bio/(:any)'] = "bio/index/$1";
} else {
$route['wrestling/(:any)'] = "bio/wrestling/$1";
$route['appearances/(:any)'] = "bio/appearances/$1";
}
更新2:你把我弄糊涂了,但是第一个解决方案必须工作,即使顺序也无关紧要:
$route['bio/(:any)'] = "bio/index/$1";
$route['wrestling/(:any)'] = "bio/wrestling/$1";
$route['appearances/(:any)'] = "bio/appearances/$1";
bio/kid
变成bio/index/kid
wrestling/kid
到bio/wrestling/kid
appearances/kid
转bio/appearances/kid
您当前的设置如下:
function index($wrestlerName = null){ }
function wrestling($wrestlerName = null){ }
function appearances($wrestlerName = null){ }
bio/kid-wonder
bio/wrestling/kid-wonder
bio/appearances/kid-wonder
如果你想让wrestling/kid-wonder
和appearances/kid-wonder
没有在url开头的生物,你需要为摔跤和外观创建新的控制器。
class wrestler extends CI_Controller {
function index($wrestlerId = NULL){
if($wrestlerId != NULL){
}
}
}
class appearances extends CI_Controller {
function index($wrestlerId = NULL){
if($wrestlerId != NULL){
}
}
}