Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.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 3应用程序中,如何将基本url传递给细枝模板?_Php_Codeigniter_Twig_Codeigniter 3 - Fatal编程技术网

Php 在这个Codeigniter 3应用程序中,如何将基本url传递给细枝模板?

Php 在这个Codeigniter 3应用程序中,如何将基本url传递给细枝模板?,php,codeigniter,twig,codeigniter-3,Php,Codeigniter,Twig,Codeigniter 3,我正在使用CodeIgniter 3.1.8和Bootstrap 4开发。我决定给它添加一些主题。该应用程序不是HMVC,而是MVC 我认为使用细枝模板引擎添加主题是个好主意。为此,我使用 主题模板的扩展名是.twig,而不是.php 在Posts controller中,我为所有帖子和按作者筛选的帖子提供了以下两种方法: 很明显,我需要为模板中的href属性使用基本url 在application\config\config.php中,我有一段代码动态获取应用程序的基本url: $root=(

我正在使用CodeIgniter 3.1.8和Bootstrap 4开发。我决定给它添加一些主题。该应用程序不是HMVC,而是MVC

我认为使用细枝模板引擎添加主题是个好主意。为此,我使用

主题模板的扩展名是
.twig
,而不是
.php

在Posts controller中,我为所有帖子和按作者筛选的帖子提供了以下两种方法:

很明显,我需要为模板中
href
属性使用基本url

application\config\config.php
中,我有一段代码动态获取应用程序的基本url:

$root=(isset($_SERVER['HTTPS']) ? "https://" : "http://").$_SERVER['HTTP_HOST'];
$root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
$config['base_url'] = $root;
但我无法将其传递到小树枝模板


我该怎么做?

我找到了一个简单的解决方案:

首先,我用两种方法向
$data
数组添加了
base\u url
变量:

public function index() {

    //call initialization method
    $config = $this->_initPagination("/", $this->Posts_model->get_num_rows());

    $data = $this->Static_model->get_static_data();
    $data['base_url'] = base_url("/");
    $data['pages'] = $this->Pages_model->get_pages();
    $data['categories'] = $this->Categories_model->get_categories();  

    //use limit and offset returned by _initPaginator method
    $data['posts'] = $this->Posts_model->get_posts($config['limit'], $config['offset']);

    $this->twig->addGlobal('siteTitle', 'My Awesome Site');
    $this->twig->addGlobal('maincss', base_url('themes/caminar/assets/css/main.css'));
    $this->twig->display('themes/caminar/layout', $data);
}

public function byauthor($authorid){
    //load and configure pagination 
    $this->load->library('pagination');
    $config['base_url'] = base_url('/posts/byauthor/' . $authorid);
    $config['query_string_segment'] = 'page';
    $config['total_rows'] = $this->Posts_model->posts_by_author_count($authorid);
    $config['per_page'] = 12;
    
    if (!isset($_GET[$config['query_string_segment']]) || $_GET[$config['query_string_segment']] < 1) {
        $_GET[$config['query_string_segment']] = 1;
    }
    
    $limit = $config['per_page'];
    $offset = ($this->input->get($config['query_string_segment']) - 1) * $limit;
    $this->pagination->initialize($config);

    $data = $this->Static_model->get_static_data();
    $data['base_url'] = base_url("/");
    $data['pages'] = $this->Pages_model->get_pages();
    $data['categories'] = $this->Categories_model->get_categories(); 
    $data['posts'] = $this->Posts_model->get_posts_by_author($authorid, $limit, $offset); 
    $data['posts_count'] = $this->Posts_model->posts_by_author_count($authorid); 
    $data['posts_author'] = $this->Posts_model->posts_author($authorid);

    $this->twig->addGlobal('siteTitle', 'My Awesome Site');
    $this->twig->addGlobal('maincss', base_url('themes/caminar/assets/css/main.css'));
    $this->twig->display('themes/caminar/layout', $data);
}
公共功能索引(){
//调用初始化方法
$config=$this->_initPagination(“/”,$this->Posts_model->get_num_rows());
$data=$this->Static_model->get_Static_data();
$data['base_url']=base_url(“/”);
$data['pages']=$this->pages\u model->get\u pages();
$data['categories']=$this->categories\u model->get\u categories();
//使用_initPaginator方法返回的限制和偏移量
$data['posts']=$this->posts\u model->get\u posts($config['limit'],$config['offset']);
$this->twig->addGlobal('siteTitle','My Awesome Site');
$this->twig->addGlobal('maincss',base_url('themes/caminar/assets/css/main.css');
$this->twig->display('themes/caminar/layout',$data);
}
公共函数作者($authord){
//加载和配置分页
$this->load->library('pagination');
$config['base\u url']=base\u url('/posts/byauthor/'.$authord);
$config['query_string_segment']='page';
$config['total\u rows']=$this->Posts\u model->Posts\u by\u author\u count($authord);
$config['per_page']=12;
如果(!isset($\u GET[$config['query\u string\u segment']]))$\u GET[$config['query\u string\u segment']]<1){
$\u GET[$config['query\u string\u segment']=1;
}
$limit=$config['每页'];
$offset=($this->input->get($config['query\u string\u segment'))-1)*$limit;
$this->pagination->initialize($config);
$data=$this->Static_model->get_Static_data();
$data['base_url']=base_url(“/”);
$data['pages']=$this->pages\u model->get\u pages();
$data['categories']=$this->categories\u model->get\u categories();
$data['posts']=$this->posts\u model->get\u posts\u by\u author($authorid,$limit,$offset);
$data['posts\u count']=$this->posts\u model->posts\u by\u author\u count($authord);
$data['posts\u author']=$this->posts\u model->posts\u author($authord);
$this->twig->addGlobal('siteTitle','My Awesome Site');
$this->twig->addGlobal('maincss',base_url('themes/caminar/assets/css/main.css');
$this->twig->display('themes/caminar/layout',$data);
}
然后我在posts.twig模板中使用了它:

<div class="spotlight {% if (loop.index is even) %}alt{% else %}{% endif %}">
    <div class="image flush">
        <a href="{{post.slug}}">
            <img src="{{base_url}}/assets/img/posts/{{post.post_image}}" alt="{{post.title}}" />
        </a>
    </div>
    <div class="inner">
        <h3>{{post.title}}</h3>
        <p>{{post.description}}</p>
        <div class="{% if (loop.index is even) %}text-right{% else %}text-left{% endif %}">
            <a href="{{base_url}}{{post.slug}}" class="button special small">Read More</a>
        </div>
    </div>
</div>

{{post.title}
{{post.description}}


如果您有更好的解决方案,请让我知道。谢谢

不会做同样的事情吗?@Vickel是的,会。
public function index() {

    //call initialization method
    $config = $this->_initPagination("/", $this->Posts_model->get_num_rows());

    $data = $this->Static_model->get_static_data();
    $data['base_url'] = base_url("/");
    $data['pages'] = $this->Pages_model->get_pages();
    $data['categories'] = $this->Categories_model->get_categories();  

    //use limit and offset returned by _initPaginator method
    $data['posts'] = $this->Posts_model->get_posts($config['limit'], $config['offset']);

    $this->twig->addGlobal('siteTitle', 'My Awesome Site');
    $this->twig->addGlobal('maincss', base_url('themes/caminar/assets/css/main.css'));
    $this->twig->display('themes/caminar/layout', $data);
}

public function byauthor($authorid){
    //load and configure pagination 
    $this->load->library('pagination');
    $config['base_url'] = base_url('/posts/byauthor/' . $authorid);
    $config['query_string_segment'] = 'page';
    $config['total_rows'] = $this->Posts_model->posts_by_author_count($authorid);
    $config['per_page'] = 12;
    
    if (!isset($_GET[$config['query_string_segment']]) || $_GET[$config['query_string_segment']] < 1) {
        $_GET[$config['query_string_segment']] = 1;
    }
    
    $limit = $config['per_page'];
    $offset = ($this->input->get($config['query_string_segment']) - 1) * $limit;
    $this->pagination->initialize($config);

    $data = $this->Static_model->get_static_data();
    $data['base_url'] = base_url("/");
    $data['pages'] = $this->Pages_model->get_pages();
    $data['categories'] = $this->Categories_model->get_categories(); 
    $data['posts'] = $this->Posts_model->get_posts_by_author($authorid, $limit, $offset); 
    $data['posts_count'] = $this->Posts_model->posts_by_author_count($authorid); 
    $data['posts_author'] = $this->Posts_model->posts_author($authorid);

    $this->twig->addGlobal('siteTitle', 'My Awesome Site');
    $this->twig->addGlobal('maincss', base_url('themes/caminar/assets/css/main.css'));
    $this->twig->display('themes/caminar/layout', $data);
}
<div class="spotlight {% if (loop.index is even) %}alt{% else %}{% endif %}">
    <div class="image flush">
        <a href="{{post.slug}}">
            <img src="{{base_url}}/assets/img/posts/{{post.post_image}}" alt="{{post.title}}" />
        </a>
    </div>
    <div class="inner">
        <h3>{{post.title}}</h3>
        <p>{{post.description}}</p>
        <div class="{% if (loop.index is even) %}text-right{% else %}text-left{% endif %}">
            <a href="{{base_url}}{{post.slug}}" class="button special small">Read More</a>
        </div>
    </div>
</div>