Installare un'estensione

Ciao a tutti ragazzi,

im ero promesso qualche settimana fa di mettermi sotto con lo studio di yii ma il lavoro ultimamente mi schiavizza… :)

ho seguito il primo tutorial e qualche altra prova… leggendo lo ammentto poche pagine di manuale… :)

Ora volevo installare un’estensione per la gestione degli utenti e volevo chiedervi quale consigliate tra le tante che ci sono? e dove posso trovare un tutorial su come installare e configurare un’estensione :)

ciao a tutti e grazie

Giuseppe

dipende da cosa vuoi fare o.o

gestione dei permessi o solo registrazione degli utenti?

yii-user è un ottima estensione per la semplice gestione degli utenti…

Io fino a questo momento ho usato il sistema RBAC di yii, ma di fatto nè molto grosso. Si possono gestire sia ruoli che singole task. Di fatto, però, credo sia difficile amministrare un sito per singole task quindi spero tu possa trovare qualche cosa di più snello.

Oltre ad yii-user che ci consiglia nickcv, ho sentito parlare bene di RIGHTS. Purtroppo non ho provato nessuna delle due, ma mi riprometto di studiarle a breve.

Io mi sono sempre trovato bene l’rbac di Yii, senza aggiungere niente

non sono proprio un fulmine a rispondere sul forum perdon :)

cmq ho provato a installare yii-user, ma senza successo…

ho scompattato l’estensione ed ho messo la cartella scompattata dentro protected della mia appricazione di prova…

ho aggiule righe di codice come da guida… ho anche indicato il nuovo db dove ho messo le nuove tabella di yii-user ma ancora nulla…

di default ho la pagina login e se provo ad inserire admin admin mi da questo errore e la stessa cosa se vado sulla pagina Register:




CDbException


The table "{{users}}" for active record class "RegistrationForm" cannot be found in the database.


C:\www\first_app\yii\framework\db\ar\CActiveRecord.php(2237)


2225     private $_model;

2226 

2227     /**

2228      * Constructor.

2229      * @param CActiveRecord $model the model instance

2230      */

2231     public function __construct($model)

2232     {

2233         $this->_model=$model;

2234 

2235         $tableName=$model->tableName();

2236         if(($table=$model->getDbConnection()->getSchema()->getTable($tableName))===null)

2237             throw new CDbException(Yii::t('yii','The table "{table}" for active record class "{class}" cannot be found in the database.',

2238                 array('{class}'=>get_class($model),'{table}'=>$tableName)));

2239         if($table->primaryKey===null)

2240             $table->primaryKey=$model->primaryKey();

2241         $this->tableSchema=$table;

2242         $this->columns=$table->columns;

2243 

2244         foreach($table->columns as $name=>$column)

2245         {

2246             if(!$column->isPrimaryKey && $column->defaultValue!==null)

2247                 $this->attributeDefaults[$name]=$column->defaultValue;

2248         }

2249 

Stack Trace

#0	

+  C:\www\first_app\yii\framework\db\ar\CActiveRecord.php(371): CActiveRecordMetaData->__construct(RegistrationForm)

#1	

+  C:\www\first_app\yii\framework\db\ar\CActiveRecord.php(386): CActiveRecord::model("RegistrationForm")

#2	

+  C:\www\first_app\yii\framework\db\ar\CActiveRecord.php(62): CActiveRecord->getMetaData()

#3	

–  C:\www\first_app\yii\demos\ciaomondo\protected\modules\user\controllers\RegistrationController.php(25): CActiveRecord->__construct()

20     }

21     /**

22      * Registration user

23      */

24     public function actionRegistration() {

25             $model = new RegistrationForm;

26             $profile=new Profile;

27             $profile->regMode = true;

28             

29             // ajax validator

30             if(isset($_POST['ajax']) && $_POST['ajax']==='registration-form')

#4	

+  C:\www\first_app\yii\framework\web\actions\CInlineAction.php(50): RegistrationController->actionRegistration()

#5	

+  C:\www\first_app\yii\framework\web\CController.php(300): CInlineAction->runWithParams(array("r" => "user/registration"))

#6	

+  C:\www\first_app\yii\framework\web\CController.php(278): CController->runAction(CInlineAction)

#7	

+  C:\www\first_app\yii\framework\web\CController.php(257): CController->runActionWithFilters(CInlineAction, array())

#8	

+  C:\www\first_app\yii\framework\web\CWebApplication.php(328): CController->run("")

#9	

+  C:\www\first_app\yii\framework\web\CWebApplication.php(121): CWebApplication->runController("user/registration")

#10	

+  C:\www\first_app\yii\framework\base\CApplication.php(155): CWebApplication->processRequest()

#11	

–  C:\www\first_app\yii\demos\ciaomondo\index.php(14): CApplication->run()

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

10 // specify how many levels of call stack should be shown in each log message

11 defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);

12 

13 require_once($yii);

14 Yii::createWebApplication($config)->run();



Dice che non trova la tabella. Sicuro di aver fatto tutto bene? Di aver configurato correttamente tutto come indicato nelle istruzioni?

vabbe ho provato due volte… nulla…sembra proprio non vedere il db, mo nel we di pasqua provo su ubuntu…

:)

grz mille ragazzi

Giuseppe

Le tabelle le devi installare tu. La definizione la trovi in framework/web/auth/schema.sql

So che questa risposta giunge in lieve ritardo, solo ora ho avuto lo stesso problema e forse ho trovato la soluzione.

Riporto ciò che ho trovato facendo una ricerca in rete. Questa è la fonte


Insert 'tablePrefix' => 'tbl_' to db configuration (protected/config/main.php)

'db'=>array(

    ...

    'tablePrefix' => 'tbl_',

),

Aggiungendo questo parametro funziona, la tabella viene trovata.

Qualcosa non mi torna:

[list=1]

[*] facendo varie ricerche in rete è possibile che solo in 3 abbiamo riscontrato questo problema?

[*] modificando config/main.php ora sono obbligato ad aggiungere il prefisso a tutte le tabelle? ci sono altre soluzioni?

[/list]

Qualcuno sarebbe così gentile da dirmi se l’estensione Yii-User è valida o ne avete adottata un’altra?

Grazie

Risolto il problema del prefisso della tabella

Le indicazioni per l’installazione di questa estensione sono, a mio parere, poco chiare

Ho trovato un commento su code.google che da l’indicazione corretta.

In config/main.php le righe:


'modules'=>array( 

              'user', 

),

vanno sostituite con:


'modules'=>array( 

               'user' => array( 

                         'tableUsers' => 'tbl_users', 

                         'tableProfiles' => 'tbl_profiles', 

                         'tableProfileFields' => 'tbl_profiles_fields', 

               ), 

), 

Così facendo la dichiarazione


'db'=>array(

    ...

    'tablePrefix' => 'tbl_',

),

che vincolava tutti i nomi di tabella non è più necessaria