2013-05-05 35 views
27

Tôi mới sử dụng PHP, tôi có một ứng dụng được phát triển trong khung công tác PHP và symfony2. Tôi đã thay đổi tệp html, thay đổi không phản ánh khi tôi đang làm mới trang.Cách tải lại bộ nhớ cache twig trong symfony2

01. I restarted the server No luck.

02. I tried to remove the twig folder from /protected/cache/ page it self not loading.

Vui lòng tư vấn, Tôi đang sử dụng máy chủ tomcat để triển khai.

Lưu ý: Tôi không có dòng lệnh symfony2 được định cấu hình trên máy chủ.

+0

Bạn có thể truy cập FTP tới máy chủ? – PMoubed

Trả lời

34

Cách đơn giản nhất, gõ lệnh:

rm -rf app/cache/* 

Vấn đề là: tất cả các file trong app/cache/ thể được gỡ bỏ một cách tự do, họ được tái sinh khi cần thiết.

Nếu bạn thực sự muốn xóa bộ nhớ cache chỉ cành lá:

rm -rf app/cache/<environment>/twig 

Thay <environment> bởi dev, prod, hoặc test theo yêu cầu của bạn.

+0

Bạn cũng nên xóa templates.php nếu bạn đã ghi đè lên các mẫu bó khác và muốn tìm các mẫu mới. –

27

Khi tạo một trường hợp Twig_Environment mới, bạn có thể chuyển một mảng các tùy chọn làm đối số thứ hai của hàm tạo. Một trong số đó là auto_reload. Khi phát triển với Twig, sẽ hữu ích khi biên dịch lại mẫu bất cứ khi nào mã nguồn thay đổi. Nếu bạn không cung cấp giá trị cho tùy chọn auto_reload, tùy chọn này sẽ tự động được xác định dựa trên giá trị debug.

Set auto_reloadtrue:

$twig = new Twig_Environment($loader, array('auto_reload' => true)); 

tài liệu Twig cho nhà phát triển: http://twig.sensiolabs.org/doc/api.html#environment-options

10

Tôi đã có một vấn đề tương tự, tuy nhiên việc xóa bộ nhớ cache thư mục không có bất kỳ tác động trên mẫu của tôi và tôi không biết tại sao. Những gì có vẻ để giải quyết vấn đề của tôi bây giờ là đoạn mã sau vào config_dev.yml tôi:

twig: 
    cache: false 

Có lẽ đây cũng là một giải pháp cho bạn, do đó bạn không cần phải sử dụng lệnh tất cả các thời gian.

Tài liệu tham khảo:

TwigBundle Configuration

Twig Environment Options

+0

cũng ý tưởng tốt Tôi có một trường hợp khác mà twig dường như không biên dịch lại luôn, đôi khi auto_reload bị bỏ qua. Vì vậy, bây giờ tôi đi mà không có bộ nhớ cache. – John

2

Nếu bạn đang sử dụng opcache/bộ nhớ đệm tương tự khác, xóa thư mục bộ nhớ cache cành lá sẽ không làm mới mẫu như bộ nhớ cache cành lá chỉ gồm các file .php. Bạn cần xóa thư mục bộ nhớ cache của twig + thực thi tệp php có chứa:

opcache_reset();

1

Bạn phải thực hiện một số thay đổi trong tệp app.php nằm trong thư mục web.

Thay đổi:

$kernel = new AppKernel('prod', false);  

tới:

$kernel = new AppKernel('prod', true); 

và xóa bộ nhớ cache nếu bạn muốn.

0

bạn có thể thêm một chức năng như thế này:

public function renderView($view, array $parameters = array()) 
{ 
    $loader = new \Twig_Loader_Filesystem($this->container->getParameter("template_path")); 
    $twig = new \Twig_Environment($loader, array('auto_reload' => true, 
     'cache' => false 
    )); 

    /////////////////////add a translate filter/////////////////////// 
    $getTextdomain = new \Twig_SimpleFilter('trans',function ($string){ 
     return $this->container->get('translator')->trans($string); 
    }); 

    $twig->addFilter($getTextdomain); 
    ////////////////////////////////////////////////////////////////// 

    ///////////////////////////Add an extension twig////////////////// 
    $twig->addExtension(new Extension()); 
    ////////////////////////////////////////////////////////////////// 

    return $twig->render($view, $parameters); 
} 
Các vấn đề liên quan