Ez a megoldás nem bántja az index.php-t: http://www.yiiframework.com/doc/cookbook/26/
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.yiiframework.com/doc/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 . '/'
),
);
}
Na, újabb problémám adódott. A nyelvválasztás szépen megy már, megcsináltam a view file-okat a megfelelő mappába, így:
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?
Hali,
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
Sziasztok,
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 tudna vki segiteni?
Elegge trukkosnek talalom atadni a paramtereket a dataprovider.nek.
Ahogy Qiang irta:
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?
Üdv mindenkinek! Örülök hogy kezd épülni a yii mellé egy kis magyar közösség, saját magamból kiindulva szükség is van rá.
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.yiiframework.com/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.yiiframework.com/doc/guide/topics.i18n
remelem igy el tudsz indulni
–iM
Olyan kérdésem lenne, hogy miféle praktikák vannak yii-ben az admin szekció elkülönítésére. Cake-ban a prefixekkel nagyon jól meg lehetett oldani ezeket. Olvastam olyat, hogy külön modult lehet létrehozni az adminnak, hogyan lehet megosztani a modelleket akkor? Mivel ugyanazokon fogsz elvileg dolgozni.
Ezt találtam, amit érdemes lehet követni:
http://www.yiiframework.com/doc/cookbook/33/
szerk. Vagy egyszerűbb lenne egy admin role-hoz kötni egy admin themet és actionoket és nem lenne modul?
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.
Adott egy yii alkalmazás, ami egészen addig tökéletesen működik, míg nem próbálok keresőbarát url-eket használni az urlManager-rel, valahogy így:
'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?
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.com/p/yii/issues/detail?id=960
–iM
É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)
Sziasztok!
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?
Szako!
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
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.
Googlen ezt találtam, kiindulópontnak jó lehet:
http://efreedom.com/Question/1-3147387/Tooltip-Follow-Jquery-Slider-Handle
Hello,
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ö
Valószínű karakterkódolási probléma. UTF8 legyen a fájl! Úgy megoldódik?