Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 让我的导航菜单与CodeIgniter一起工作_Php_Codeigniter - Fatal编程技术网

Php 让我的导航菜单与CodeIgniter一起工作

Php 让我的导航菜单与CodeIgniter一起工作,php,codeigniter,Php,Codeigniter,基本上,我有两个控制器使用CodeIgniter为学校的一个项目创建了一个简单的博客。 一个是主页,它是登录页面。另一个是他们登录时的成员。在这个成员控制器中,我正在为add_post()、view_users_posts()等创建函数。 Member.php class Member extends CI_Controller{ function __construct(){ parent::__construct(); $is_logged_in = $this->s

基本上,我有两个控制器使用CodeIgniter为学校的一个项目创建了一个简单的博客。 一个是主页,它是登录页面。另一个是他们登录时的成员。在这个成员控制器中,我正在为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');
}
My member 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的新控制器,该控制器将加载视图

    我的原因是,如果我单击“添加帖子”,它会将我带到“成员/添加帖子”,但当我单击“返回主页”时,我会获得“成员/成员”,然后再次添加帖子,我会获得“成员/成员/添加帖子”


    我希望这是有道理的,我完全不知所措。谢谢你的帮助

    您需要使用
    基本url

    支持您的基本url是(在配置中),www.example.com/

    那么您的代码将被删除

    <li><a href="<?php echo base_url('member/add_post');?>">Add Post</a></li>
    
  • 对其他项目也要这样做

    注意:记住配置文件中的斜杠。否则将其包含在
    base\u url('/member/add\u post')


    您需要使用
    基本url

    支持您的基本url是(在配置中),www.example.com/

    那么您的代码将被删除

    <li><a href="<?php echo base_url('member/add_post');?>">Add Post</a></li>
    
  • 对其他项目也要这样做

    注意:记住配置文件中的斜杠。否则将其包含在
    base\u url('/member/add\u post')


    你走在正确的轨道上。 对于您拥有的菜单项,您必须完成以下控制器功能:

    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\u users\u posts()
    访问一些新的模型函数来检索posts,并将其传递给视图以进行适当的格式化。请注意,
    view/view\u users\u posts.php
    应该根据我上面写的方式访问变量
    $posts

    您的思路是正确的。 对于您拥有的菜单项,您必须完成以下控制器功能:

    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\u users\u posts()
    访问一些新的模型函数来检索posts,并将其传递给视图以进行适当的格式化。请注意,
    view/view\u users\u posts.php
    应该根据我上面写的方式访问变量
    $posts

    不久前我遇到了同样的问题。我的解决方案是将基本url设置为index.php的路径。比如说

    $config['base_url'] = "http://localhost/codeigniter/index.php/"
    
    所以你可以这样使用它

    <a href="<?php echo base_url() ?>Controller/Action/Param1/Param2">Link Text</a>
    

    不久前,我也遇到了同样的问题。我的解决方案是将基本url设置为index.php的路径。比如说

    $config['base_url'] = "http://localhost/codeigniter/index.php/"
    
    所以你可以这样使用它

    <a href="<?php echo base_url() ?>Controller/Action/Param1/Param2">Link Text</a>
    
    
    
    @itachi:我的网站在导航栏中不使用基本URL,而且工作正常。我确实是以一个前导的
    /
    开始的。是的,这是导航菜单,但我在完成这些功能时确实需要这些信息。谢谢@沃利克:真奇怪。你应该有和海报上提到的相同的问题。我的原因是,如果我单击“添加帖子”,它会将我带到“成员/添加帖子”,但当我单击“返回主页”时,我会获得“成员/成员”,然后再次添加帖子,我会获得“成员/成员/添加帖子”。我玩了一会儿,发现在不添加基本url或站点url时出现了同样的问题。@itachi:我的站点在导航栏中不使用基本url,它们工作正常。我确实是以一个前导的
    /
    开始的。是的,这是导航菜单,但我在完成这些功能时确实需要这些信息。谢谢@沃利克:真奇怪。你应该有和海报上提到的相同的问题。我的原因是,如果我单击“添加帖子”,它会将我带到“成员/添加帖子”,但当我单击“返回主页”时,我会获得“成员/成员”,然后再次添加帖子,我会获得“成员/成员/添加帖子”。我玩了一会儿,看到了同样的问题,没有添加base\u url或site\u url.Perfect,谢谢。我以前使用的基本url错误。我必须添加index.php,因为我还没有删除它,但它现在可以工作了!再次感谢,不客气。如果它解决了您的问题,请将此答案标记为已被接受,因为其他用户可能会面临与您相同的问题,他们也会发现它很有用。太好了,谢谢。我以前使用的基本url错误。我必须添加index.php,因为我还没有删除它,但它现在可以工作了!再次感谢,不客气。如果它解决了您的问题,请将此答案标记为已被接受,因为其他用户可能会面临与您相同的问题,他们也会发现它很有用。我会的,但我的样式表已全部链接,必须返回并修复所有这些问题。下次我会这样做的,谢谢!也许您可以实现一个函数,将echo作为helper类中的基本url,并在启动时通过配置数组加载helper。请参阅CI的文档。希望这能帮上忙我有个建议给你。看看Symfony 2。请不要误解我的意思,但我认为CodeIgniter有点卡住了。PHP5.3添加了很多很酷的特性,比如名称空间等等,如果你不使用它们,你会变成一个笨蛋。CodeIgniter是一个很酷的用于小型Web应用程序的框架,但是自从我看到Symfony 2的魔力之后,就没有其他的F