基本上我有两个使用CodeIgniter的控制器,用于学校项目的简单博客。 一个是Home,它是登录页面。另一个是成员,当他们登录时。在这个成员控制器中,我正在为add_post(),view_users_posts()等创建函数。 Member.php
class Member extends CI_Controller{
function __construct(){
parent::__construct();
$is_logged_in = $this->session->userdata('is_logged_in');
if (!isset($is_logged_in) || $is_logged_in !== true) {
redirect('home');
}
}
public function index() {
$this->load->library('pagination');
$config['base_url'] = base_url() . 'index.php/member/index/';
$config['total_rows'] = $this->db->get('posts')->num_rows();
$config['per_page'] = 5;
$config['num_links'] = 20;
$this->pagination->initialize($config);
$data['posts'] = $this->posts_model->get_all_posts($config['per_page'], $this->uri->segment(3));
$this->load->view('member_view', $data);
}
public function add_post() {
$this->load->view('add_post_view');
}
我的会员视图有一个导航菜单,其中包含指向这些功能的链接,如下所示: member_view.php
<li><a href="member">Home</a></li>
<li><a href="member/add_post">Add Post</a></li>
<li><a href="member/view_users_posts">My Posts</a></li>
<li><a href="member/reset_pass">Reset Password</a></li>
<li><a href="member/logout">Logout</a></li>
我还没有完成它们,因为我无法知道要编码什么。基本上,如果用户单击Add Post,它应该引用控制器中的add_post函数,该函数将加载名为add_post的视图?或者它应该指向一个名为Add_post的新控制器,它将加载视图?
我的理由是如果我点击添加帖子它会把我带到member / add_post但是当我点击回家时我得到会员/会员然后再添加帖子我得到会员/会员/ add_post。
我希望这是有道理的,我完全失去了。谢谢你的帮助!
答案 0 :(得分:4)
您需要使用base url
。
支持您的基本网址(在配置中),www.example.com /
那么你的代码将是
<li><a href="<?php echo base_url('member/add_post');?>">Add Post</a></li>
对其他项目也这样做。
注意:请记住配置文件中的斜杠。否则将其包含在base_url('/member/add_post')
答案 1 :(得分:0)
你走在正确的轨道上。 对于您拥有的菜单项,您必须完成这些控制器功能:
class Member extends CI_Controller {
function __construct()
{
parent::__construct();
$is_logged_in = $this->session->userdata('is_logged_in');
if (!isset($is_logged_in) || $is_logged_in !== true) {
redirect('home');
}
function add_post()
{
// for example:
$this->load->view('header'); // standard header and menu view
$this->load->view('add_post'); // input form view
$this->load->view('footer'); // standard footer, adverts, etc.
}
function view_users_posts()
{
$data ['posts'] = $this->model->get_all_posts( ...(etc)... );
$this->load->view('header'); // standard header and menu view
$this->load->view('view_users_posts', $data);
$this->load->view('footer'); // standard footer, adverts, etc.
}
function reset_pass()
{
...
}
function logout()
{
...
}
}
第一个新功能引用views/header.php
,views/add_post.php
和views/footer.php
。其他“成员”函数也应该加载页眉和页脚(用于一致的站点外观),但加载不同的主体功能,可能称为与功能非常相似的东西。
我假设view_users_posts()
访问一些新的模型函数来检索帖子,将其传递给视图以进行适当的格式化。请注意,view/view_users_posts.php
应根据我上面编写的方式访问变量$posts
。
答案 2 :(得分:0)
前段时间我遇到了同样的问题。我的解决方案是将基本URL设置为index.php的路径。例如
$config['base_url'] = "http://localhost/codeigniter/index.php/"
所以你可以像这样使用它
<a href="<?php echo base_url() ?>Controller/Action/Param1/Param2">Link Text</a>