如何包含css和js文件(Codeigniter + Twig)

时间:2015-02-17 16:47:28

标签: codeigniter twig assets

我在论坛中的新人和我的西班牙语...抱歉我的英语水平很低......

我在我的项目中使用Codeigniter和twig引擎,但我遇到了一些问题......

当我使用时:

<link rel="stylesheet" href="{{ asset('assets/css/bootstrap.min.css') }}">

Codeigniter抛出异常。它说:

  

功能&#34;资产&#34;不存在。你是说&#34;断言&#34; in&#34; index.html.twig&#34;在第12行---#0 /volume1/web/ci/application/libraries/Twig/ExpressionParser.php(351):Twig_ExpressionParser-&gt; getFunctionNodeClass(&#39; asset&#39;,12)#1 / volume1 / web / ci / application / libraries / Twig / ExpressionParser.php(144):Twig_ExpressionParser-&gt; getFunctionNode(&#39; asset&#39;,12)#2 / volume1 / web / ci / application / libraries / Twig / ExpressionParser .php(84):Twig_ExpressionParser-&gt; parsePrimaryExpression()#3 /volume1/web/ci/application/libraries/Twig/ExpressionParser.php(41):Twig_ExpressionParser-&gt; getPrimary()#4 / volume1 / web / ci /application/libraries/Twig/Parser.php(141):Twig_ExpressionParser-&gt; parseExpression()#5 /volume1/web/ci/application/libraries/Twig/TokenParser/Block.php(45):Twig_Parser-&gt; subparse (Array,true)#6 /volume1/web/ci/application/libraries/Twig/Parser.php(187):Twig_TokenParser_Block-&gt; parse(Object(Twig_Token))#7 / volume1 / web / ci / application / libraries /Twig/Parser.php(95):Twig_Parser-&gt; subparse(NULL,false)#8 / volume1 / web / ci / application / libraries /Twig/Environment.php(543):Twig_Parser-&gt; parse(Object(Twig_TokenStream))#9 /volume1/web/ci/application/libraries/Twig/Environment.php(595):Twig_Environment-&gt; parse(Object (Twig_TokenStream))#10 /volume1/web/ci/application/libraries/Twig/Environment.php(335):Twig_Environment-&gt; compileSource(&#39; ...&#39;,&#39; index。 html.twig&#39;)#11 /volume1/web/ci/application/libraries/Twig.php(90):Twig_Environment-&gt; loadTemplate(&#39; index.html.twig&#39;)#12 / volume1 /web/ci/application/controllers/welcome.php(15):Twig-&gt; display(&#39; index.html.twig&#39;,Array)#13 [内部函数]:Welcome-&gt; index( )#14 /volume1/web/ci/system/core/CodeIgniter.php(360):call_user_func_array(Array,Array)#15 /volume1/web/ci/index.php(202):require_once(' / volume1 / web / ci ...&#39;)#16 {main}

还会为任何函数twig抛出异常

有什么问题?

谢谢!

修改

好的,我还没有解决我的问题,功能不存在,但我必须包括我的css和js文件,还要使用twig。问题出在我的.htaccess文件上(该文件位于我服务器的根目录下)。该文件写道:

RewriteEngine on
RewriteCond $1 !^(index.php|css|js|images|robots.txt) 
RewriteRule ^(.*)$ /ci/index.php/$1 [L]

所以我在&#34; /ci/assets/.htaccess"上创建了另一个.htaccess文件。使用此代码:

RewriteEngine off
RewriteCond $1 !^(index.php|css|js|images|robots.txt) 
RewriteRule ^(.*)$ /ci/index.php/$1 [L]

我不知道这是否是最好的方式,但这对我有效,我可以正常工作。

任何消化?

3 个答案:

答案 0 :(得分:0)

您需要内容为asset()函数的帮助文件。 但也许你有一个错字:

<link rel="stylesheet" href="{{ assert('assets/css/bootstrap.min.css') }}">

答案 1 :(得分:0)

asset()参与了Symfony2项目,而不是Twig项目。

您应首先在codeigniter中创建此功能。

1)在您的自定义Twig库中,添加以下行:

$this->_twig_env->addFunction(
    new Twig_SimpleFunction('asset', 'asset', 
        array('is_safe' => array('html')))
);

2)在你的助手中,添加以下功能(将assets/替换为你的资产的路径,这里我假设你的图像,js,......在assets/images中可用,{{1 },assets/js)。

assets/...

答案 2 :(得分:0)

您可能想要添加一个过滤器,例如用法如下

Link rel="stylesheet" href="{{ 'assets/css/bootstrap.min.css' | asset }}">

要实现上述目标,您可能需要扩展twig过滤器类并添加过滤器。

requrie_once("path of Twig_Extension class); // update this 
use Twig_Extension;
use Twig_Filter_Method;

class customExtension  extends Twig_Extension
{

    /**
     * Returns the name of the extension.
     *
     * @return string The extension name
     */
    function getName()
    {
       return "customExtension";
    }

    public function getFilters()
    {
        return array(
           'asset'      => new Twig_Filter_Method($this,'twig_asset_filter'),
        );
    }

    /**
     * @param $path
     *
     * @return string
     */
    function twig_asset_filter($path)
    {
        return 'assets/'.$path;
    }

之后你可以用同样的方式使用它 - 这个扩展已经写好了,可以通过作曲家访问..

点击此链接https://github.com/iddigitalagency/Codeigniter-twig-twigextensions