Tippek, trükkök, ötletek Ha elakadtál, vagy kérdésed van...
#61
Posted 26 February 2011 - 02:00 AM
Van egy wiki erre
http://www.yiiframew...endent-dropdown
m(o_O)m
#62
Posted 27 February 2011 - 12:56 PM
szako, on 26 February 2011 - 02:00 AM, said:
Van egy wiki erre
http://www.yiiframew...endent-dropdown
Igen, ez alapján oldottam meg. De a validálás nem működik.
#63
Posted 28 February 2011 - 03:42 AM
heal, on 27 February 2011 - 12:56 PM, said:
Szerintem két lehetőséged van:
1) Ha adatbázis a forrás, akkor vedd fel az ország mezőt is a táblába, majd validálj arra.
2) A modellben hozz létre egy virtuális mezőt, majd a controllerben add meg az értékét a POST tömb alapján.
m(o_O)m
#65
Posted 06 March 2011 - 05:36 AM
Egy olyan kérdésem lenne, hogy használom a CJuiTabs widgetet és az egyik tabfülön belül jqgridet használok ezt csak simán php kódból csinálom. A gondom az hogy a jqgrid táblája kilóg a tabfülön kvülre és nem találtam módot rá hogy úgy paraméterezzem fel a tab widgetet hogy megadhassam a szélességét, hogy ne lógjon ki a grid belőle.
Nem aktuális már a layoutot rontottam el. (Még csak most tanulom a yii-t)
#66
Posted 17 March 2011 - 04:09 PM
pl az user modulban a profillal kapcsolatos linkek (szerkesztés, új jelszó, ...), másik modulnál meg más.
A helyzet az, hogy egy-egy modulban több view is található és nem szeretném mindenhova beírni ugyanazt a menü tömböt.
Most úgy oldottam meg, hogy külön fájlba helyeztem a menut, amit include()-al használok fel a view fájlokban.
Biztosan van ennél szebb megoldás.
Ebben kérnék segítséget.
#67
Posted 17 March 2011 - 09:50 PM
heal, on 17 March 2011 - 04:09 PM, said:
pl az user modulban a profillal kapcsolatos linkek (szerkesztés, új jelszó, ...), másik modulnál meg más.
A helyzet az, hogy egy-egy modulban több view is található és nem szeretném mindenhova beírni ugyanazt a menü tömböt.
Most úgy oldottam meg, hogy külön fájlba helyeztem a menut, amit include()-al használok fel a view fájlokban.
Biztosan van ennél szebb megoldás.
Ebben kérnék segítséget.
hali,
most lehet, hogy rosszul ertelmezem a kerdest, de miert nem csinalsz egy widget-et, aminek bepasszolsz egy tombot (a menu elemeit)
most igy gyorsan ezt talaltam: http://www.yiiframework.com/wiki/23/
remelem segit
--iM
ui: egyebkent meg az include() helyett en a renderPartial() kontroller fuggvennyel varialnek, ha az kell
The maker rests. The wheel’s in motion.
-- Imre Madách
check out Yii2 Theme Factory at https://yii2.themefactory.net
#69
Posted 11 May 2011 - 04:31 AM
Lassan készülődik első Yii alapú site-om, azonban beszélgettünk a biztonságról egyik barátommal, és akkor merült fel a form spoofing kérdése (pl. egy termékhez választhatok olyan kiszerelést, ami nem hozzá tartozik, viszont olcsóbb, és ugyanakkora). Eddig nem volt tapasztalatom azzal, hogy Yii-ben ezt hogyan lehet kiszűrni, eddigi oldalaimban meg nem volt rá szükség, itt viszont elég sokszor.
Neten keresgetve nem is igazán találtam megfelelőt, főleg nem Yii-vel kapcsolatban.
Van-e rá valami elegáns, automatikus megoldás, vagy pedig szerver oldalon mindig manuálisan kell ezt ellenőriznem?
Segítségeteket köszönve:
shark
#70
Posted 11 May 2011 - 07:16 AM
hat ezt mindenkeppen a szerver oldalon kell valahogy megoldanod ha 100%-os biztonsagot akarsz (van olyan? hehe).
Nezd meg ezt a cikket (nem Yii) http://www.mustap.co...g--step-by-step .
Soha nem szabad bizni a felhasznalo altal bevitt adatokban, es hiaba csinalsz pl. egy JavaScript validalast, mi van ha a felhszanalo kikapcsolja a JS a bongeszoben? stb
--iM
The maker rests. The wheel’s in motion.
-- Imre Madách
check out Yii2 Theme Factory at https://yii2.themefactory.net
#71
Posted 11 May 2011 - 04:39 PM
Köszönöm a válaszod. Az ajánlott cikket ismerem, csak reméltem, hogy van valami elegánsabb, esetleg automatikus megoldás, mert bajos minden helyen tartalmazás viszonyt vizsgálni (kb 15-20 helyen kell checkboxokat vizsgálnom, másnál adatot visz fel a felhasználó, amit a modell ellenőriz).
Más megoldás nem lévén lehet marad a favágás

Üdv.:
shark
imehesz, on 11 May 2011 - 07:16 AM, said:
hat ezt mindenkeppen a szerver oldalon kell valahogy megoldanod ha 100%-os biztonsagot akarsz (van olyan? hehe).
Nezd meg ezt a cikket (nem Yii) hxxp://www.mustap.com/phpzone_post_85_form-spoofing--step-by-step .
Soha nem szabad bizni a felhasznalo altal bevitt adatokban, es hiaba csinalsz pl. egy JavaScript validalast, mi van ha a felhszanalo kikapcsolja a JS a bongeszoben? stb
--iM
#72
Posted 17 August 2011 - 11:21 AM

Úgy döntöttem, hogy az aktuális munkámat Yii alapokon írom meg. PHP-ben elég jól otthon vagyok, de az MVC keretrendszerek még újak. Szerencsére nem túl szoros a határidő.
Úgy tervezem, hogy az egész rendszer egy oldal lenne amin belül vízszintes tabokkal és függőleges harmónikával lehetne navigálni.A konkrét tartalmakat meg ajax segítségével húzná be a fő keretbe. És sok esetben az oldasávban is ajax-szal töltődnének a menük.
Ha jól sejtem az eddig tanultak alapján, akkor a teljes alkalmazást a Site Controller fogja irányítani és a különböző fő és oldal tartalmakat meg az adott Modelek controller-e és view-jai.
Lécci, erősítsetek vagy cáfoljatok meg mielőtt elindulok a zsákuccába!
#73
Posted 25 August 2011 - 08:18 AM
Problémám az lenne, hogy van két táblám:
CREATE TABLE homerseklet ( hom_id integer NOT NULL DEFAULT nextval(('seq_homerseklet'::text)::regclass), term_id integer, hom_aktualis double precision NOT NULL, hom_releallapot smallint NOT NULL DEFAULT 0, hom_rogzdatum timestamp without time zone NOT NULL DEFAULT now(), hom_beallitott double precision NOT NULL DEFAULT 0.0, CONSTRAINT pk_homerseklet_homid PRIMARY KEY (hom_id), CONSTRAINT fk_homerseklet_termosztat FOREIGN KEY (term_id) REFERENCES termosztat (term_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE SET NULL ) CREATE TABLE termosztat ( term_id integer NOT NULL DEFAULT nextval(('seq_termosztat'::text)::regclass), term_nev character varying(50) NOT NULL, term_aktualis_homerseklet double precision, term_beallitott_homerseklet double precision, term_releallapot smallint CONSTRAINT termosztat_pkey PRIMARY KEY (term_id) )
Azt szeretném megcsinálni, hogy pl 6. óránként átlagolja a hőmérsékletet. Erre megírtam ezt a selectet:
SELECT term_nev, csoportositott_homerseklet.homerseklet_aktualis_atlag as term_id,, csoportositott_homerseklet.homerseklet_beallitott_atlag as hom_aktualis, csoportositott_homerseklet.homerseklet_rele_allapot_atlag as hom_beallitott, csoportositott_homerseklet.rogzites_datum_intervalum as hom_releallapot FROM "termosztat" "t" INNER JOIN (SELECT homerseklet.term_id AS termosztatid, round(CAST (avg(hom_aktualis) AS numeric),2) AS homerseklet_aktualis_atlag, round(CAST (avg(hom_beallitott) AS numeric),2) AS homerseklet_beallitott_atlag, ROUND(avg(hom_releallapot),0) AS homerseklet_rele_allapot_atlag, interval_to_hours(hom_rogzdatum - :beginDateTime) * :rangeInterval AS rogzites_datum_intervalum FROM homerseklet WHERE hom_rogzdatum >= :beginDateTime AND hom_rogzdatum <= :endDateTime AND homerseklet.term_id IN (9, 14, 15) GROUP BY homerseklet.term_id, interval_to_hours(hom_rogzdatum - :beginDateTime) * :rangeInterval ) AS csoportositott_homerseklet ON csoportositott_homerseklet.termosztatid = term_id
Ez egész korrekt sebességgel működik, viszont mikor át akarom írni CDbCriteria-ra, és with-del eager loading-olni akarom a termosztat relációt, hibát kapok. Ha nem eager loadingolom, akkor meg használhatatlanul lassú. Term_nevet nem rakhatom group by-ba, mert szintén lassú.
$criteria->alias = "csoportositott_homerseklet"; $criteria->select = " csoportositott_homerseklet.term_id as term_id, avg(csoportositott_homerseklet.hom_aktualis) as hom_aktualis, avg(csoportositott_homerseklet.hom_beallitott) as hom_beallitott, avg(csoportositott_homerseklet.hom_releallapot) as hom_releallapot "; $criteria->condition = " csoportositott_homerseklet.hom_rogzdatum >= :beginDateTime AND csoportositott_homerseklet.hom_rogzdatum <= :endDateTime AND csoportositott_homerseklet.term_id IN (9, 14, 15) "; $criteria->group = " csoportositott_homerseklet.term_id, interval_to_hours(csoportositott_homerseklet.hom_rogzdatum - :beginDateTime) * :rangeInterval "; $criteria->params = array( 'beginDateTime' => $beginDateTime, 'endDateTime' => $endDateTime, 'rangeInterval' => $rangeInterval ); return Homerseklet::model()->with('termosztat')->findAll($criteria);
Hiszen ilyenkor a belső selectbe akarja berakni a join-t. Mit lehet ilyenkor csinálni, hogy kívülre rakja?
#74
Posted 28 September 2011 - 06:15 AM
CGridView-val jelenítek meg egy listát, melyben vannak joinolt táblából származó mezők, és van egy olyan, ami egy joinolt táblához joinolt 2 táblában levő összefűzött mezőkből jelenítené meg a mezőt.
Minden adat teljesen jól megjelenik. Csináltam hozzá a model-ben getter függvényt is. A search függvényt is átírtam a szerintem megfelelőre:
public function search() { $criteria=new CDbCriteria; $criteria->compare('t.id',$this->id); $criteria->compare('t.name',$this->name,true); $criteria->compare('t.start_date',$this->start_date,true); $criteria->compare('t.end_date',$this->end_date,true); $criteria->compare('t.campaign_name',$this->campaign_name, true); $criteria->compare('sector_translation.szoveg',$this->bannerFilter,true); $criteria->compare('t.position1',$this->position1,true); $criteria->compare('t.position2',$this->position2,true); $criteria->compare('t.partner',$this->partner,true); $criteria->compare('t.sales',$this->sales,true); $criteria->compare('t.create_user',$this->create_user,true); $criteria->compare('t.create_date',$this->create_date,true); $criteria->compare('t.last_modify_user',$this->last_modify_user,true); $criteria->compare('t.last_modify_date',$this->last_modify_date,true); $criteria->with = array('regions', 'regions.region', 'regions.region.translation', 'sectors', 'sectors.sector', 'sectors.sector.sector_translation'); return new CActiveDataProvider(get_class($this), array( 'criteria'=>$criteria, )); }
A problémám az, ha megpróbálok bannerFilter mezőre filter-ben keresni, akkor nem sikerül. Ha be van kapcsolva a log, akkor abban azt látom, hogy 2 query fut le egymás után az egyikben nincs benne a join - pedig a with meg van adva a criteria-nak - és a következőben pedig ugyanaz lefut a joinokkal együtt. A hiba akkor jelentkezik ha megpróbálok a joinolt mezőben keresni, mivel a joinok nélküli queryben meghal a where-ben levő feltétel.
Mi lehet a probléma? Ha kell bemásolgatok kódrészleteket, csak mondjátok meg melyik részt.
íme a 2 log bejegyzés:
11:50:29.4739 trace system.db.CDbCommand
Querying SQL: SELECT `t`.`id` AS `t0_c0`, `t`.`name` AS `t0_c1`,
`t`.`start_date` AS `t0_c2`, `t`.`end_date` AS `t0_c3`, `t`.`campaign_name`
AS `t0_c4`, `t`.`partner` AS `t0_c5`, `t`.`sales` AS `t0_c6`,
`t`.`position1` AS `t0_c7`, `t`.`position2` AS `t0_c8`, `t`.`create_user`
AS `t0_c9`, `t`.`create_date` AS `t0_c10`, `t`.`last_modify_user` AS
`t0_c11`, `t`.`last_modify_date` AS `t0_c12`, `t`.`mode` AS `t0_c13`,
`t`.`state` AS `t0_c14` FROM `jm_container` `t` LIMIT 10
in
/var/www/jobmonitor/frameworks/framework-1.1.3.r2247/zii/widgets/CBaseListView.php
(105)
in
/var/www/jobmonitor/frameworks/framework-1.1.3.r2247/zii/widgets/grid/CGridView.php
(220)
in
/var/www/jobmonitor/jobmonitor_admin/protected/views/container/admin.php
(57)
11:50:29.6557 trace system.db.CDbCommand
Querying SQL: SELECT `t`.`id` AS `t0_c0`, `regions`.`container_id` AS
`t1_c0`, `regions`.`region_id` AS `t1_c1`, `region`.`regioid` AS `t2_c0`,
`region`.`nev` AS `t2_c1`, `region`.`sorrend` AS `t2_c2`,
`region`.`statusz` AS `t2_c3`, `region`.`special` AS `t2_c4`,
`region`.`create_user` AS `t2_c5`, `region`.`create_date` AS `t2_c6`,
`region`.`last_modify_user` AS `t2_c7`, `region`.`last_modify_date` AS
`t2_c8`, `translation`.`id` AS `t3_c0`, `translation`.`lang` AS `t3_c1`,
`translation`.`szoveg` AS `t3_c2`, `translation`.`entity_id` AS `t3_c3`,
`translation`.`create_user` AS `t3_c4`, `translation`.`create_date` AS
`t3_c5`, `translation`.`last_modify_user` AS `t3_c6`,
`translation`.`last_modify_date` AS `t3_c7` FROM `jm_container` `t` LEFT
OUTER JOIN `jm_container_regions` `regions` ON
(`regions`.`container_id`=`t`.`id`) LEFT OUTER JOIN `jm_regions` `region`
ON (`regions`.`region_id`=`region`.`regioid`) LEFT OUTER JOIN `jm_texts`
`translation` ON (`region`.`nev`=`translation`.`id`) WHERE (`t`.`id` IN
(2, 6, 9, 12, 13)) AND ((translation.lang='hu' or translation.lang is
null))
in
/var/www/jobmonitor/frameworks/framework-1.1.3.r2247/zii/widgets/CBaseListView.php
(105)
in
/var/www/jobmonitor/frameworks/framework-1.1.3.r2247/zii/widgets/grid/CGridView.php
(220)
in
/var/www/jobmonitor/jobmonitor_admin/protected/views/container/admin.php
(57)
#75
Posted 02 March 2012 - 11:55 AM
ismerkedek a yii-vel. De már most van egy kis apró gondom. Gondolom egyszerű lenne a megoldás, de én nem találom a neten.

Egy nagyon egyszerű jog kezelésről lenne szó. A users táblában van egy jog oszlop. Ha 1-es akkor admin, ha 2-es akkor moderátor, ha 3-as akkor sima user. Ezt szeretném beleintegrálni valahogy az accessRule szabályok közé. Hogy lehetne ezt megoldani?
A users mezőbe kellene ezt valahogy...mindenkit nem szeretnék felsorolni.
Illetve van egy érdekes dolog, Comment controll fájlban. Meg van adva, hogy csak belépett felhasználók küldhetnek be akármit is. Mégis be lehet küldeni anonimként is.
Illetve a jelenleg belépett felhasználó adatait, hogy érem el? Csinálni kell mindig egy lekérdezést? Vagy jobb ha már belépéskor elmentem ezeket?
Bocs a sok kérdés miatt.

#76
Posted 02 March 2012 - 12:52 PM
Speeedfire, on 02 March 2012 - 11:55 AM, said:
ismerkedek a yii-vel. De már most van egy kis apró gondom. Gondolom egyszerű lenne a megoldás, de én nem találom a neten.

Egy nagyon egyszerű jog kezelésről lenne szó. A users táblában van egy jog oszlop. Ha 1-es akkor admin, ha 2-es akkor moderátor, ha 3-as akkor sima user. Ezt szeretném beleintegrálni valahogy az accessRule szabályok közé. Hogy lehetne ezt megoldani?
A users mezőbe kellene ezt valahogy...mindenkit nem szeretnék felsorolni.
Illetve van egy érdekes dolog, Comment controll fájlban. Meg van adva, hogy csak belépett felhasználók küldhetnek be akármit is. Mégis be lehet küldeni anonimként is.
Illetve a jelenleg belépett felhasználó adatait, hogy érem el? Csinálni kell mindig egy lekérdezést? Vagy jobb ha már belépéskor elmentem ezeket?
Bocs a sok kérdés miatt.

Az utolsóra tudok válaszolni, ami lehet a másodikat is megoldja. Az elsőre én sem tudom a választ

Szóval, amikor beloginoltatod a usert, akkor az kb így történik:
Yii::app()->user->login($identity,$duration);
Ahol az Identity egy CUserIdentity, a Duration pedig hogy meddig maradjon belépve.
Tehát az identity-nek nézz utána, azon belül lehet beállítani pl azt, hogy valaki admin-e:
$this->setState('isAdmin',true);
amit utána a következőképp érsz el, ha a user be van lépve:
Yii::app()->user->isAdmin
Üdv!
#77
Posted 02 March 2012 - 02:49 PM
mudlee, on 02 March 2012 - 12:52 PM, said:

Szóval, amikor beloginoltatod a usert, akkor az kb így történik:
Yii::app()->user->login($identity,$duration);
Ahol az Identity egy CUserIdentity, a Duration pedig hogy meddig maradjon belépve.
Tehát az identity-nek nézz utána, azon belül lehet beállítani pl azt, hogy valaki admin-e:
$this->setState('isAdmin',true);
amit utána a következőképp érsz el, ha a user be van lépve:
Yii::app()->user->isAdmin
Üdv!
Alakul, bár vannak érdekességek. Felnyomtam a yii-users modult a blog demo-ba, de nem a rendes modellbe húzza bele, hanem csak kinyomja a html tartalmat, mindenféle head, body nélkül. Maga a modul megy, csak épp nem jó helyen.

De rajta vagyok a dolog, menni fog ez szerintem. Különösen tettszik ez a gii, hogy legenerál mindent.

#78
Posted 03 March 2012 - 08:30 AM
Speeedfire, on 02 March 2012 - 02:49 PM, said:

De rajta vagyok a dolog, menni fog ez szerintem. Különösen tettszik ez a gii, hogy legenerál mindent.

Kikukáztam mindent, majd az elejétől kezdve húztam fel a rendszert. Most minden okés. A jogosultságok is lassan készen vannak. Egyre jobban megkedvelem. Kicsit cms feelingje van, de mégsem.
Ez az MVC generáló meg valami zseniális.

#79
Posted 07 March 2012 - 03:49 AM
Kisebb probléma merült fel vele ismét.

Létrehoztam egy új profile_field-et avatars néven. Értelem szerűen ide jönnek majd az avatarok, megadtam neki, hogy hova rakja őket. De érdekes mód csak az adminnak tudok fájlt feltölteni usernek nem, még adminként sem.
Itt akkor a controllerben állítsam most be, hogy okés legyen neki is? Illetve amikor feltölti akkor át is szeretném nevezni, a kiegészítő erre nem ad lehetőséget, pedig jó lenne.
Lassan pedig minden megy rajta.

#80
Posted 10 March 2012 - 07:51 AM
Ellenben apró gondban vagyok ismételten.

Van egy post modell/controller ezek a blogbejegyzések. Ezekhez akarok csatolmányt. Létre is hozam ezalapján egy item modellt/controllert. Majd a widgetet beillesztettem a post _form mezőjébe. Szépen jelzi is a form a fájl fieldet. Ellenben postoláskor, se az adatbázisba nem kerül semmi, se a mappába.

Ötlet, hogy mit bénázok el?

kód