Tippek, trükkök, ötletek Ha elakadtál, vagy kérdésed van...
#1
Posted 05 January 2010 - 09:48 AM
Gondoltam létrehozom ezt a topic-ot, hogy "echte ungarishe" nyelven is lehessen már segítséget kérni, remélem nem csak nekem lesz jó és hasznos, hanem más - hozzám hasonlóan - kezdő yii rajongók is örömmel veszik majd.
Egyenlőre így ömlesztve, jöhetne ide bármilyen kérés, kérdés, aztán később szét lehet bontani...
Rögtön fel is vázolnám az első - talán nem csak engem érintő - problémát: egy többnyelvű weboldalt fejlesztek yii-vel, de igazából egy nagyon lényeges ponton elakadtam, és hosszas keresés és még több próbálkozás után sem találtam kielégítő választ, arra a kérdésre, hogy mi a legkézenfekvőbb, legesztétikusabb módja annak, hogy menet közben tudjak nyelvet választani az oldalon. Az egészet úgy képzeltem el, hogy $_SESSION változóban (mondjuk $_SESSION['lang']) tárolnám le az éppen aktuális nyelvet, ami alapértelmezettként magyar. Ha pedig paraméterként az URL-ben átadom, hogy ?lang=en akkor váltana át angol nyelvre és értelemszerűen ez felül is íródna a $_SESSION-ben, hogy ne kelljen mindig paraméterezve használnom az url-eket. Egészen addig nincsen semmi gond, míg a konfigurációs main.php-ban állítgatom a "language" paramétert, szépen, az adott nyelvhez tartozó view file-okat jeleníti meg a yii. Igen ám, de sehogy sem bírtam rávenni a yii-t, hogy ezt a paramétert futás közben meg tudjam változtatni, illetve az még oké, hogy megváltoztatom, de a view file-okat már nem igazán akarja cserélgetni. Most ott tartok, hogy onBeginRequest-tel kísérletezgetek, hogy ne kelljen a saját frontController-t használni (erre láttam javaslatot a cookbook-ban).
Szóval a kérdés az lenne, hogy szerintetek, ezt hogyan lehetne a legésszerűbben megvalósítani. Nem akarok az index.php-ba "szemetelni", vagy a fő layout állományba, egy jó, de használható megoldást keresek.
U.i.: javaslatok jöhetnek a topic címével kapcsolatban, gondolom utólag ezt lehet módosítani...
#2
Posted 06 January 2010 - 03:33 AM
#3
Posted 06 January 2010 - 04:41 AM
Roberto, on 06 January 2010 - 03:33 AM, said:
Igen, ezt is néztem már, de nem igazán akartam saját frontController-t használni, mindenesetre most jobb megoldás nem jut eszembe, és annyira nem is vészes...
Közben felmerült egy újabb problémám. Szeretnék statikus oldalakat is megjeleníteni, méghozzá úgy, hogy ne kelljen külön action-öket írni, hanem a megfelelő paraméterek után automatikusan töltődjön be a statikus oldal. http://www.yiiframew...oc/cookbook/22/ - eszerint, megy is minden, mint a karikacsapás, de ez ugye nincs tekintettel arra, hogy én magyar nyelvű statikus tartalmat akarok megjeleníteni, vagy esetleg valami mást. Minden esetben a views/site/pages/ mappából veszi a php-t. Erre nincs valami ötletetek, hogy adott nyelven a megfelelő mappából huzzú be a file-t? (pl.: views/site/pages/hu/)
Ok, közben megoldottam:
public function actions()
{
return array(
'page'=>array(
'class'=>'CViewAction',
'basePath'=>'pages/' . Yii::app()->language . '/'
),
);
}
This post has been edited by kiskp: 06 January 2010 - 05:08 AM
#4
Posted 06 January 2010 - 09:07 AM
views/
site/
hu/
index.php
en/
index.php
Nincs semmi baj, az adott nyelvnek megfelelően betölti a megfelelő view file-t, egészen addig, amíg "site/" alól ki nem törlöm az eredeti "index.php"-t, ami azért furcsa mert ha egy üres "index.php"-t hagyok ott, - de lehet benne bármilyen tartalom - akkor nincs gond, behúza szépen a "hu/index.php"-t vagy épp az "en/index.php"-t, attól függően, hogy milyen az alkalmazás nyelve. De ha ezt az index.php-t törlöm, akkor "SiteController cannot find the requested view "index"." hibával elszáll az egész.
Ötlet?
#5
Posted 16 January 2010 - 04:51 PM
itt egy jo kis tipp, persze lehet, hogy a tobbseg szamara ez egyertelmu, de biztos ami biztos...
Elinditottam egy sajat project-et, (http://storedbyu.mehesz.net), ahol a TMDB film-adatbazishoz kapcsolodva az ember keresgelhet filmek, kesobbiekben kepregenyek es konyvek kozott is. A lenyege az egesznek, hogy email-kent elmentve tarthatja szamon a felhasznalo, hogy melyik film, konyv van meg neki (szoveges formaban, tehat nem foglal sok helyet).
En jelenleg GMAIL-t hasznalok es a TAG-ek segitsegevel konnyeden osztalyozhatom a filmeket. Melyiket adtam kolcson, melyiket szeretnem megvenni, vicces film vagy drama stb ...
No, es itt jon a tipp: a TMDB API-t haromszor hasznalom (elvileg ketszer is eleg lenne, de a szineszek listajat csak az IMDB-tol tudom kinyerni) es a visszaadott rekordot eltarolom, hogy ha a kesobbiekben valaki ezt keresi, akkor a sajat adatbazisombol huzom elo az adatot es nem hivom meg a TMDB API-t - igy nem terhelem le a szervereket es maga a progi is gyorsabb lesz, hiszen helyi adatbazisbol dolgozik. A tablaban van egy auto_increment ID es ezen kivul meg egy egyedi kulcs az imdbID. Amikor valaki rakeres egy filmre, akkor behuzom az osszes talalatot a TMDB-tol es egyszeruen vegigmegyek a listan es megprobalom elmenteni oket, persze a boki az, hogy ha siman a $model->save() metodust hivom meg, akkor azonos imdbID eseten elszall a program SQL hibaval, tehat a save() elott ellenoriztetem az adatokat a modell validate() funkciojaval:
...
if( $model->validate() )
{
if( $model -> save )
{
return true;
}
}
...most igy visszaolvasva eleg kesze-kuszanak tunik az egesz, de remelem a lenyeg kihamozhato ---
--iM
ui: http://www.themoviedb.org/
The maker rests. The wheel’s in motion.
-- Imre Madách
check out Yii Themes at http://yiithemes.mehesz.net
#6
Posted 19 January 2010 - 11:41 AM
Most kezdtem a yii.t es kicsit elakadtam. Hogyan tudok gridview.ban checkbox.ot hozza adni az egyik oszlopban
ez a kodom eddig:
...
echo CHtml::beginForm();
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
array(
'name'=>'sending',
'value'=>'CHtml::checkbox("to[]", false, array("value"=>"$data->Id"))',
),
),
));
echo '<input type="hidden" name="email" value="send"/>';
echo CHtml::submitButton('verstuur');
echo CHtml::endForm();
...de checkbox helyett csak egy stringet ir ki. pl ezt: "<input value="2" type="checkbox" name="to[]" id="to" />" htmlnek megtenne de nem stringnek
#7
Posted 20 January 2010 - 01:18 PM
imehesz, on 20 January 2010 - 01:14 PM, said:
szemely szerint en nem hasznaltam meg ezt a widget-et :/ a dokumentacioban ezt talaltam:
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
'title', // display the 'title' attribute
'category.name', // display the 'name' attribute of the 'category' relation
'content:html', // display the 'content' attribute as purified HTML
array( // display 'create_time' using an expression
'name'=>'create_time',
'value'=>'date("M j, Y", $data->create_time)',
),
array( // display 'author.username' using an expression
'name'=>'authorName',
'value'=>'$data->author->username',
),
array( // display a column with "view", "update" and "delete" buttons
'class'=>'CButtonColumn',
),
),
));maga a link pediglen itt van: http://www.yiiframew...c/api/CGridView
remelem ez segit.
Itt az a lenyeg, hogy a widget-nek atadott parameter ez a CActiveDataProvider legyen:
http://www.yiiframew...iveDataProvider
--iM
The maker rests. The wheel’s in motion.
-- Imre Madách
check out Yii Themes at http://yiithemes.mehesz.net
#8
Posted 11 February 2010 - 04:11 AM
Ahogy Qiang irta:
Quote
Sztem egyszerubb ha sajat grid.et generalok sajat view.kkal (pl minden egyes row.t egy renderPartial fgv.vel legeneralom).
Btw akadt egy masik kerdesem, es ez nem tudom, h yii bug e vagy mi a szosz. A lenyeg hasznalom a CMultiFileUpload widget.et
ez egy partial view.m
echo CHtml::beginForm('','post',array('enctype'=>'multipart/form-data')).$eol = "\n";
$this->widget('CMultiFileUpload',
array(
'name' => $type.'_upload_files',
'id' => $type.'_upload_files',
'htmlOptions' => array(
'class' => 'multi',
),
'accept' => Yii::t('multi', $accepted_file_types),
'denied'=>Yii::t('multi','its a not allowed filetype'),
'duplicate' => Yii::t('multi','its already there'),
'remove' => Yii::t('multi','[x]'),
)
);
echo CHtml::hiddenField('type',"$type").$eol;
echo CHtml::hiddenField($type.'_file_project_name'.$i, $file_project_name).$eol;
echo CHtml::submitButton('upload'.$type, array('id'=>'btn_upload_'.$type,'name'=>'btn_upload_'.$type,'value'=>'upload '.$type));
illetve, ami nem mukodik a multiupload widget.tel kapcs. az accepted types. Figyelmen kivul hagyja oket.
vkinek vmi otlete?
#9
Posted 12 February 2010 - 11:33 PM
Az eddigi yii-s pályafutásomat illetőleg sehol sem tartok, de igyekszem tanulni, olvasgatni. Nem használtam semmi ilyesmit korábban, ha meg kellett valamit írni, azt megírtam nulláról. Egyelőre nagyon idegen ez az egész osztály-mvc-keretrendszer-stb dolog, de mindenképp tetszik, szóval a lelkesedésem maximális, a hozzáértésem kevésbé.
Már egy ideje próbálok csinálni valamit, egyelőre nem tudom mi lesz (tervezés zéró, ami megtetszik azt belépítem). Egyelőre azt próbálom kitalálni - és ebben a segítségeteket is kérném - hogy hol/hogy tudok magyarítani a jószágon?
A view-ekben, komponensekben láttam elvétve egyegy mondatot, ezeket kézzel lefordítottam, de van egy csomó üzenet, amit sehol sem találok (illetve de: a magban, de azt nem illik átírni). Nincs szükségem többnyelvű felületre ami menet közben fordít nekem, csupán arra, hogy lehetőleg minden üzenet ami megjelenik a böngészőben magyar legyen.
Válaszotokat előre is köszönöm
#10
Posted 22 February 2010 - 01:19 PM
manfreed, on 12 February 2010 - 11:33 PM, said:
Az eddigi yii-s pályafutásomat illetőleg sehol sem tartok, de igyekszem tanulni, olvasgatni. Nem használtam semmi ilyesmit korábban, ha meg kellett valamit írni, azt megírtam nulláról. Egyelőre nagyon idegen ez az egész osztály-mvc-keretrendszer-stb dolog, de mindenképp tetszik, szóval a lelkesedésem maximális, a hozzáértésem kevésbé.
Már egy ideje próbálok csinálni valamit, egyelőre nem tudom mi lesz (tervezés zéró, ami megtetszik azt belépítem). Egyelőre azt próbálom kitalálni - és ebben a segítségeteket is kérném - hogy hol/hogy tudok magyarítani a jószágon?
A view-ekben, komponensekben láttam elvétve egyegy mondatot, ezeket kézzel lefordítottam, de van egy csomó üzenet, amit sehol sem találok (illetve de: a magban, de azt nem illik átírni). Nincs szükségem többnyelvű felületre ami menet közben fordít nekem, csupán arra, hogy lehetőleg minden üzenet ami megjelenik a böngészőben magyar legyen.
Válaszotokat előre is köszönöm
hali,
erre tobbfele megoldas is lehet.
Az egyik, az egyszerubb (form-ok eseteben), azaz hogy a validator-nak atkuldessz egy message valtozot es oda teszed bele a magyar szoveget. (lasd: http://www.yiiframew...doc/cookbook/1/ )
A masik, kicsit bonyolultabb, de elegansabb is egyben es nem csak form-oknal lehet hasznalni (i18n) - ahol egy teljsen "nyelvkeszletet" hasznalsz. http://www.yiiframew...ide/topics.i18n
remelem igy el tudsz indulni
--iM
The maker rests. The wheel’s in motion.
-- Imre Madách
check out Yii Themes at http://yiithemes.mehesz.net
#11
Posted 17 May 2010 - 03:30 AM
Ezt találtam, amit érdemes lehet követni:
http://www.yiiframew...oc/cookbook/33/
szerk. Vagy egyszerűbb lenne egy admin role-hoz kötni egy admin themet és actionoket és nem lenne modul?
m(o_O)m
#12
Posted 13 October 2010 - 05:44 AM
manfreed, on 12 February 2010 - 11:33 PM, said:
A view-ekben, komponensekben láttam elvétve egyegy mondatot, ezeket kézzel lefordítottam, de van egy csomó üzenet, amit sehol sem találok (illetve de: a magban, de azt nem illik átírni). Nincs szükségem többnyelvű felületre ami menet közben fordít nekem, csupán arra, hogy lehetőleg minden üzenet ami megjelenik a böngészőben magyar legyen.
Válaszotokat előre is köszönöm
Ha a yii-s core üzenetekre gondolsz, akkor első körben a config file-ban a komponensekhez írd be ezt:
'coreMessages'=>array( 'basePath'=>'protected/messages', ),
Majd a protected/messages/ mappában hozz létre azon a nyelven egy könyvtárat, amit beállítottál a config-ban, tehát ha
'language' => 'hu'akkor egy "hu" nevű mappát, és ide másold be a "framework\messages\hu\yii.php" file-t amibe aztán kedved szerint beírhatod a rendszerüzenetek magyar megfelelőjét.
#13
Posted 13 October 2010 - 06:02 AM
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'pattern1'=>'route1',
'pattern2'=>'route2',
'pattern3'=>'route3',
),
)
Localhoston nincs probléma tökéletesen megy a dolog, míg ha feltolom éles szerverre az alábbi hibaüzenetet kapom:
Fatal error: Call to a member function parsePathInfo() on a non-object in /opt/share/www/b/bsplastic.hu/framework/web/CWebApplication.php on line 419
Ha kikommentezem a rules részt a konfigurációs állományból, akkor tökéletesen működik.
Valakinek valami ötlet?
#14
Posted 13 October 2010 - 01:55 PM
kiskp, on 13 October 2010 - 06:02 AM, said:
...
hali
személy szerint még nem volt ilyen problémám , de egyelőre a szervereim csak PHP 5.2-sel futnak.
nézd meg ezt, hátha segít, vagy ad valami ötletet ...
http://code.google.c...s/detail?id=960
--iM
The maker rests. The wheel’s in motion.
-- Imre Madách
check out Yii Themes at http://yiithemes.mehesz.net
#15
Posted 18 October 2010 - 04:22 AM
kiskp, on 13 October 2010 - 06:02 AM, said:
Érdekes. Olyan mintha az urlManager komponens inicializálása során valami csendben elhasalna és a kompones helyett null vagy valami ilyesmit tárolna az inicializált komponenseket tároló tömbben. Ha nincs a hibalogban semmi, akkor én egy gyors manuális tesztet csinálnék, a rules szabályokat egyesével bekapcsolni és tesztelni.
Másik tippem, hogy a szabályok feldolgozását alapból cache-eli a yii, ha használsz cache-t akkor esetleg ezzel is lehet gond. (cache ürítés, vagy kikapcsolás)
#16
Posted 29 November 2010 - 03:12 AM
Gyűröm a Yii-t néhány hete kiegészítő elfoglaltságként. Rájöttem, hasznos dolgokra pl. kép tárolása, megjelenítése blob-ban/ból.
Kellene segítség a cjuisliderimput, modell változóhoz (mezőhöz)kötésében. Nem íródik vissza a beállított érték.
Előre is köszi.
pharsan
#17
Posted 29 November 2010 - 07:35 AM
pharsan, on 29 November 2010 - 03:12 AM, said:
Gyűröm a Yii-t néhány hete kiegészítő elfoglaltságként. Rájöttem, hasznos dolgokra pl. kép tárolása, megjelenítése blob-ban/ból.
Kellene segítség a cjuisliderimput, modell változóhoz (mezőhöz)kötésében. Nem íródik vissza a beállított érték.
Előre is köszi.
pharsan
Ennél több kellene, hogyan hívod meg a widgetet és hogyan kezeled le a postolt adatokat? A form submitja után megjelenik a slider értéke a post-ban? Mi a mező neve az adatbázis táblában?
m(o_O)m
#18
Posted 29 November 2010 - 04:10 PM
Kérdéseddel adtál ötletet, a debuggolás és Firebug segitett előrébb lépni.
Szóval ez itt a CRUD generált _form.php részlete, kiegészítve a slider-re vonatkozó kóddal:
<?php echo $form->errorSummary($model); ?>
.
.
.
<div class="row">
<?php echo $form->labelEx($model,'ertekeles'); ?>
<?php echo $form->textField($model,'ertekeles'); ?>
<?php echo $form->error($model,'ertekeles'); ?>
<?php $form->widget('zii.widgets.jui.CJuiSliderInput', array(
'name'=>'Receptura_ertekeles',
'value'=>$model->ertekeles,
// additional javascript options for the slider plugin
'options'=>array(
'event'=>'change',
'min'=>1,
'max'=>7,
),
'htmlOptions'=>array(
'style'=>'width:100px;',
),
)); ?>
</div>
.
.
.
Fontos a sorrend, előbb kell szerepeljen a mező, azután a slider.
Valamint a "'event'=>'change'" különben csak összekapcsolódik, de nem íródik be a változóba.
További kérdésem akad...
Az update.php-ban beállítva a class="wide form"-ot a label és a mező egymás mellé kerül (szerintebb szebb).
Hogyan lehetne a slidert a mezővel egy sorba igazítani.
Esetleg a mezőt elrejteni és tooltip-ben az értéket. (Ez a bonusz feladat
Üdv
pharsan
#19
Posted 30 November 2010 - 02:11 AM
pharsan, on 29 November 2010 - 04:10 PM, said:
További kérdésem akad...
Az update.php-ban beállítva a class="wide form"-ot a label és a mező egymás mellé kerül (szerintebb szebb).
Hogyan lehetne a slidert a mezővel egy sorba igazítani.
Nem igazán értem, melyik mezővel? Ha "wide" osztályt hozzáadod a div-hez, akkor a labelek balra, az input mezők jobbra lesznek. Ha a slidert a textbox mellé akarod, akkor próbálkozz floattal. Nem használtam még a slider osztályt, így nem tudom milyen kimenetet generál.
Ha a textboxban nem akard megjeleníteni az értéket, akkor miért nem direktben tolod át az input értékét és törlöd a textboxot? A widgetben:
'name'=>'Receptura[ertekeles]'
feltételezve azt, hogy a modelled a Receptura.
pharsan, on 29 November 2010 - 04:10 PM, said:
Googlen ezt találtam, kiindulópontnak jó lehet:
http://efreedom.com/...y-Slider-Handle
m(o_O)m
#20
Posted 30 November 2010 - 05:16 AM
Mostanság kezdtem el foglalkozni a Yii-vel és nem teljesen értek valamit.
miért van az hogy ha a menübe label tagnak étkezetes betüt adok meg akkor nem hajlandó kiírni az egyész menüt :S
<?php $this->widget('zii.widgets.CMenu', array(
'items'=>array(
array('label'=>'Kezdőlap', 'url'=>array('/site/index')),itt az Ő betű miatt az egész Kezdőlap menüt eltünteti.
Mit rontottam el?
előre is köszö

Help













