Yii Framework Forum: Url Path - Yii Framework Forum

Jump to content

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

Url Path Rate Topic: -----

#1 User is offline   fdilecce 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 51
  • Joined: 03-September 12

Posted 27 June 2013 - 08:47 AM

Ciao a tutti,
ho aggiunto un nuovo model e relativo crud ad una applicazione con lo strumento gii.
se visito il controller con

nomecontroller/admin

funziona tutto bene.
Ma le azioni view:

nomecontroller/id

ed update:

nomecontroller/update/id

mi restituiscono: Error 400

Se scrivo l'url in questo modo:

nomecontroller/view?id=lineetot
configurazioni/update?id=lineetot

tutto funziona correttamente.
Per tutto il resto dell'applicazione a cui ho aggiunto questo nuovo controller continua a funzionare senza problemi l'url:
controller/azione/id

Qualcuno mi può aiutare a capire cosa succede?
grazie
0

#2 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 2,006
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 28 June 2013 - 07:37 AM

Hai aggiunto .htaccess e configurato il file di configurazione affinché legga i path nel modo corretto ed indicato che index.php non venga incluso negli url generati?
0

#3 User is offline   fdilecce 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 51
  • Joined: 03-September 12

Posted 28 June 2013 - 09:28 AM

View Postsensorario, on 28 June 2013 - 07:37 AM, said:

Hai aggiunto .htaccess e configurato il file di configurazione affinché legga i path nel modo corretto ed indicato che index.php non venga incluso negli url generati?


intanto grazie per l'aiuto
avevo capito che questo che hai scritto dovevo farlo in generale per tutta l'applicazione una volta per tutte.
non capisco perchè fino ad oggi ha funzionato tutto bene, ora aggiungendo questa nuova tabella sul db e generando i relativi model e crud da gii non funziona l'url.
Per il resto continua a funzionare.
cosa dovrei modificare in .htaccess e nel file di configurazione?
0

#4 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 345
  • Joined: 10-April 12

Posted 28 June 2013 - 12:11 PM

con chiavi primarie che siano varchar devi scrivere apposite rules, con gli id numerici dovresti continuare a non avere problemi.
0

#5 User is offline   fdilecce 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 51
  • Joined: 03-September 12

Posted 29 June 2013 - 03:32 AM

View Postst4nny, on 28 June 2013 - 12:11 PM, said:

con chiavi primarie che siano varchar devi scrivere apposite rules, con gli id numerici dovresti continuare a non avere problemi.


stavo iniziando a capire anche io che questo potesse essere il problema.
infatti ho aggiunto un'altra tabella con chiave varchar ed ho lo stesso problema.
qualcuno mi aiuta a capire quali sono le rules da aggiungere per chiavi primarie varchar?
grazie
0

#6 User is offline   fdilecce 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 51
  • Joined: 03-September 12

Posted 29 June 2013 - 04:01 AM

ho provato a modificare le rules di urlManager in questo modo:

	'rules'=>array(
				'<controller:\w+>/<id:\d+>'=>'<controller>/view',
				'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
				'<controller:\w+>/<action:(create|view|update|delete|admin|index)>'=>'<controller>/<action>', //limited for this action(create|view|update|delete|admin|index)
				'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',				 
				'<controller:(item)>/<id:\w+>'=>'item/view', //rules: do not insert primary key (create|view|update|delete|admin|index)


leggendo su questo post
ma non ho risolto nulla.
0

#7 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 345
  • Joined: 10-April 12

Posted 29 June 2013 - 07:06 AM

io nelle mie configurazioni ho risolto così:

main.php
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'caseSensitive'=>false,
'rules'=>array(
           '<controller:\w+>/<id:\d+>'=>'<controller>/view',
           '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
           '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
           //rules: fix rewrite url for varchar PK
           '<controller:(impostazioni)>/<action:\w+>/<id:\w+>'=>'impostazioni/<action>',
           '<controller:(impostazioni)>/<id:\w+>'=>'impostazioni/view',
),


dove impostazioni è il tuo controller.

.htaccess invece è:
RewriteEngine On
#RewriteBase /
#Se l'applicazione gira in una sottocartella (appesempio) della root directory di apache
RewriteBase /appesempio
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]

0

#8 User is offline   fdilecce 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 51
  • Joined: 03-September 12

Posted 29 June 2013 - 04:18 PM

se non capisco male sono le stesse rules che ho indicato nel post precedente,
le ho ricontrollate e le mie sono identiche ma non funziona.
anche .htaccess è lo stesso
0

#9 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 345
  • Joined: 10-April 12

Posted 01 July 2013 - 11:16 AM

dovresti avere delle rules di questo tipo:
           '<controller:(configurazioni)>/<action:\w+>/<id:\w+>'=>'configurazioni/<action>',
           '<controller:(configurazioni)>/<id:\w+>'=>'configurazioni/view',


0

#10 User is offline   fdilecce 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 51
  • Joined: 03-September 12

Posted 01 July 2013 - 11:56 AM

allora,
ho inserito questo:
'<controller:(configurazioni)>/<action:\w+>/<id:\w+>'=>'configurazioni/<action>',
'<controller:(configurazioni)>/<id:\w+>'=>'configurazioni/view',
'<controller:(festivi)>/<action:\w+>/<id:\w+>'=>'festivi/<action>',
'<controller:(festivi)>/<id:\w+>'=>'festivi/view',


configurazioni è un controller con un model associato che ha come chiave primaria un varchar.
l'azione update ora funziona, ma la view:
index.php/configurazioni/parametro

no perchè considera il parametro come il nome di un'azione ed ho:

Error 404

Il sistema non ha potuto trovare l'azione "parametro" richiesta.

Mentre per il controller festivi che lavora su di un model con chiave primaria tipo DATE
non funziona nessuno dei due...
0

#11 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 345
  • Joined: 10-April 12

Posted 01 July 2013 - 04:54 PM

a me l'url standard per la view mi risulta essere
controller/view/id/chiave_int


e quindi per te sarà:
configurazioni/view/id/chiave_varchar

0

#12 User is offline   fdilecce 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 51
  • Joined: 03-September 12

Posted 02 July 2013 - 10:04 AM

io invece vedo solo:

index.php/configurazioni/chiave_varchar

e per tutto il resto funziona correttamente:

index.php/controller/chiave_intera
0

#13 User is offline   fdilecce 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 51
  • Joined: 03-September 12

Posted 02 July 2013 - 10:56 AM

dovrei aver risolto,
il problema era che nella url:

controller/qualcosa

qualcosa può essere sia una action (crate, view ecc..) sia una chiave varchar.
dunque in qualche modo bisogna distinguere i casi. Per questo ho prima inserito la rules che identifica controller/action con tutte le action possibili, se non c'è matching, posso essere sicuro che si tratta di controller/chiave_varchar.
Per questo è importante anche l'ordine:


'<controller:\w+>/<action:(create|view|update|delete|admin|index)>'=>'<controller>/<action>', 
'<controller:(configurazioni)>/<nome:\w+>'=>'configurazioni/view',
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',		
'<controller:(configurazioni)>/<action:\w+>/<id:\w+>'=>'configurazioni/<action>',
'<controller:(festivi)>/<action:\w+>/<id:\w+>'=>'festivi/<action>',
'<controller:(festivi)>/<data:\w+>'=>'festivi/view', 


inoltre mi sembra di aver capito che il nome dei parametri da indicare nella route deve essere lo stesso usato nel controller per questo nella seconda rule ho usato nome e nell'ultima data.
in questo modo funziona anche per la chiave di tipo data
spero di essere stato chiaro, magari a qualcuno (come me) può essere utile
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