Yii Framework Forum: Assets + Css - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Assets + Css Problem z nadpisywaniem i aktualizacją css Rate Topic: -----

#1 User is offline   Mhuh 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 04-January 13

Posted 04 January 2013 - 08:00 AM

Witam serdecznie,

na wstępie chciałbym przywitać całą polską społeczność Yii, jestem nowym użytkownikiem i mam nadzieje, że będę mógł dołożyć do projektu pare swoich cegiełek.

----GORZKIE ŻALE----
Jedyny FW na jakim pracowałem i miałem styczność to CodeIgniter. Mimo tego zrozumienie Yii, zwłaszcza w mojej sytuacji sprawia mi pewne trudności. Zostałem wrzucony do projektu, który został ukończony w ok. 60%. Muszę sprawić aby wszystko działało, a z Yii żadnego kontaktu wcześniej nie miałem. Aby nie wyszło, że są to same gorzkie żale, przyznam że dzięki temu mam przyjemność zapoznać się z frameworkiem i wcale z tego powodu nie płacze :) Potrzebuję tylko małego wsparcia.
---------------------




---PROBLEM---
Zaczynając od prostych rzeczy, chciałbym zedytować pare plików css, ponieważ tego wymaga moje pierwsze zadanie. Pliki css znajdują się w folderze yiiroot/css. Przy tworzeniu nowego pliku i dołączaniu go do sekcji nagłówkowej zmiany są widoczne, jednak przy edycji już istniejących arkuszy na serwerze - żadne modyfikacje nie przynoszą skutku. Istnieją jako kod w plikach, ale nie widać żadnych rezultatów w przeglądarce. Zakładam(chyba słusznie), że sprawę psują assety. Na początku myślałem, że proste usunięcie zawartości tego folderu powinno załatwić sprawę. Niestety rozczarowałem się i nadal stoję w miejscu.
Czy ktoś uprzejmy mógłby mi wskazać gdzie jest błąd w moim rozumowaniu, ewentualnie wytłumaczyć zasadę działania Yii w takich przypadkach? W pliku css dana klasa jest zawarta, tak samo w strukturze, jednak style nie są aprobowane przez przeglądarke. Dodam, że żadnych literówek, błędnych deklaracji itp. nie ma. Przejrzałem materiał dostępny w internecie, jednak nadal nie mogą popradzić sobię z tym problemem.

Pozdrawiam, MHuh
0

#2 User is offline   Baranek 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 38
  • Joined: 19-July 11

Posted 04 January 2013 - 08:03 AM

Witam,

w /protected/config dodaj sobie opcje debug true. Mozesz tez usunac zawartosc katalogu assets w katalogu projektu (poznasz po katalogach co maja w nazwach krzaki)
0

#3 User is offline   Mhuh 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 04-January 13

Posted 04 January 2013 - 08:09 AM

Witaj,

dziękuję za ekspresową odpowiedź. Nie bardzo wiem gdzie w /protected/confing mam ustawić opcję debugowania? Na pewno mam ustawioną w yiiroot/index.php wartość

defined('YII_DEBUG') or define('YII_DEBUG',true);


Jeśli chodzi o usuwanie zawartości katalogu assets, to również tego próbowałem, niestety bez rezultatów.

Pozdrawiam, MHuh
0

#4 User is offline   Baranek 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 38
  • Joined: 19-July 11

Posted 05 January 2013 - 03:19 AM

Ja mam to w /protected/config/main.php
'params'=>array(
		// this is used in contact page
		'adminEmail'=>'webmaster@example.com',
		'defaultPageSize' => 20,
		'debug' => true,
		'webRoot' => dirname(__FILE__).DIRECTORY_SEPARATOR.'../../'
	)


Może jakis inny moduł obsługuje te assety skoro usunięcie tego katalogu nic nie daje, może jest jakiś moduł do kompresji tego jeszcze
0

#5 User is offline   aquasite.pl 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 20-May 11

Posted 05 January 2013 - 04:07 AM

Patrzyłeś w źródle strony czy przeglądarka "widzi" te zaktualizowane pliki? Z jakiego adresu są pobierane pliki css? Czy właśnie z tej ścieżki, pod którą edytujesz plik? Może pliki css ładowane są z folderu themes/..? Firebug do FF albo Google chrome (skrót F12) i sprawdź skąd ładują się pliki css.
Posted Image
Agencja interaktywna Itzen.pl
Informatyczne rozwiązania dla firm.
Programowanie, Pozycjonowanie, Testy A/B, Reklama.
0

#6 User is offline   Mhuh 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 04-January 13

Posted 08 January 2013 - 05:00 AM

Witam serdecznie,

dziękuję wszystkim za porady. Muszę przyznać, że sprawdziłem poprawność trybu debugowania oraz prawidłowość ścieżek. Wszystko wydawało się zgodne z waszymi poradani. Postanowiłem ostatni raz wyczyścić /assets i o dziwo zadziałało. Rzecz, którą powtarzałem kilkanaście razy i nie przynosiła rezultatu. Do teraz nie mogę ustalić gdzie leżał problem, najważniejsze, że wszystko jest już sprawne. Jeśli uda mi się znaleźć przyczynę usterki, podziele się opisem na forum.

Pozdrawiam i jeszcze raz dziękuję za odpowiedzi, Mhuh
0

#7 User is offline   redguy 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 822
  • Joined: 02-July 10
  • Location:Central Poland

Posted 09 January 2013 - 09:58 AM

generalnie czyszczenie assetow powinno pomoc, ale moze problem lezal troche gdzie indziej - na produkcji moze miales ustawione opcje keszowania statycznych plikow (naglowek http Expires) i pliki keszowaly sie w przegladarce lub jakims proxy/loadbalancerze gdzies po drodze? jesli tak - dopiero kiedy wygasl czas 'Expires' proxy/przegladarka ponownie odpytalo serwer o aktalizacje pliku i wszystko zaskoczylo.
red
0

#8 User is offline   Mhuh 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 04-January 13

Posted 10 January 2013 - 08:42 AM

View Postredguy, on 09 January 2013 - 09:58 AM, said:

generalnie czyszczenie assetow powinno pomoc, ale moze problem lezal troche gdzie indziej - na produkcji moze miales ustawione opcje keszowania statycznych plikow (naglowek http Expires) i pliki keszowaly sie w przegladarce lub jakims proxy/loadbalancerze gdzies po drodze? jesli tak - dopiero kiedy wygasl czas 'Expires' proxy/przegladarka ponownie odpytalo serwer o aktalizacje pliku i wszystko zaskoczylo.


Hmm, faktycznie ma to sens i prawdopodobnie tak było. Poszukam i dam znać :)
0

#9 User is offline   kradam 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 22-October 12

Posted 10 January 2013 - 09:12 AM

Przyłączając się do wątku, co można zrobić, gdy trzeba edytować intensywnie CSS? Czyszczenie assets przed każdym wyświetleniem aplikacji jest nieco kłopotliwe (chyba, że jakieś makro w IDE). Ja wpadłem na pomysł edycji CSS w assets, tylko potem trzeba pamiętać o przeniesieniu pliku we właściwe miejsce. Jest jakiś lepszy sposób?
0

#10 User is offline   1cichy 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 24
  • Joined: 12-June 12
  • Location:Poland

Posted 10 January 2013 - 01:10 PM

Proponuje w config-u dla asset managera ustawić forceCopy na true.
'componets'=>array(
  'assetManager'=>array(
    'forceCopy'=>true,
  )
)

Więcej info tutaj:
http://www.yiiframew...orceCopy-detail
0

#11 User is offline   hunterek 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 04-September 13

Posted 04 September 2013 - 05:24 AM

Odświeżę trochę temat. Ja rozwiązałem to trochę inaczej. Usuwam cyklicznie co 1h assety, w przypadku częstych aktualizacji odpalam crona. Rozwiązanie problemu:

Do tego celu potrzebujemy rozszerzenia PHPDocCrontab oraz wpis w CronTabie odpalania co minute "php yiic cron run"

Worker
function delete_directory($dirname)
  {
    if (is_dir($dirname)) 
    {
      $dir_handle = opendir($dirname);
    }

    if (!$dir_handle) 
    {
      return false;
    }

    while($file = readdir($dir_handle)) 
    {
      if ($file != "." && $file != "..")
      {
        if (!is_dir($dirname."/".$file))
        {
          unlink($dirname."/".$file);
        }
        else
        {
          delete_directory($dirname.'/'.$file);
        }
      }
    }
    closedir($dir_handle);
    rmdir($dirname);
  }
class WorkerCommand extends CConsoleCommand
  {
   
    /**
    * @cron *\59 * * * * 
    */
    public function actionIndex()
    {
      
      if(is_dir('./../assets/')==true)
      {
        $active_directory = './../assets/';
        $handle=opendir($active_directory);
        $zmienna=0;

        while(FALSE !==($file=readdir($handle)))
        {
          $path = $active_directory . $file;
          if ($file != "." && $file != ".." && is_dir($path) == TRUE)
          {
            $zmienna++;
          }
        }
        echo $zmienna;

        if ($handle = opendir($active_directory)) 
        {
           while (false !== ($entry = readdir($handle))) 
           {
             if ($entry != "." && $entry != "..") 
             {
               echo "$entry\n";
               delete_directory('./../assets/'.$entry);
              }
            }
          closedir($handle);
        }

        if($zmienna != 0)
        {
          $wpis = new CronLog;
          $wpis->text = "Usunalem ". $zmienna." folderów" ;
          $wpis->save();
        } else {
          $wpis = new CronLog;
          $wpis->text = "Brak folderów do usuniecia" ;
          $wpis->save();
        }
      } else {
        echo 'brak katalogu';
        $wpis = new CronLog;
        $wpis->text = "Brak katalogu głównego assets do usuniecia" ;
        $wpis->save();  
      }
    }
  }

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users