Extending User プラグインのスクリーンキャストのすべての手順に従いましたが、何らかの理由で [プロファイル] タブと新しく追加されたフィールドが表示されません。2番目の簡単な方法を使用したので、これが私がやったことです:
- Alomicuba名前空間の下にプラグインとモデルなどを作成します
ビデオで説明されているように、ファイルを作成して必要な変更を加えます。
Plugin.php <?php namespace Alomicuba\Profile; use System\Classes\PluginBase; use RainLab\User\Models\User as UserModel; use RainLab\User\Controllers\Users as UsersController; /** * Profile Plugin Information File */ class Plugin extends PluginBase { public $requires = ['RainLab.User']; /** * Returns information about this plugin. * * @return array */ public function pluginDetails() { return [ 'name' => 'Profile', 'description' => 'Add extra functionalities for Alomicuba WS by extends RainLab User', 'author' => 'DTS', 'icon' => 'icon-users' ]; } public function boot() { UserModel::extend(function($model){ $model->hasOne['profile'] = ['Alomicuba\Profile\Models\Profile']; }); UsersController::extendFormFields(function ($form, $model, $context){ if ($model instanceof UserModel) return; $form->addTabFields([ 'pinCode' => [ 'label' => 'PIN', 'tab' => 'Profile' ], 'phone2' => [ 'label' => 'Teléfono (2)', 'tab' => 'Profile' ], 'phone3' => [ 'label' => 'Teléfono (3)', 'tab' => 'Profile' ], 'phone4' => [ 'label' => 'Teléfono (4)', 'tab' => 'Profile' ] ]); }); } } add_profiles_fields_to_user_table.php <?php namespace Alomicuba\Profile\Updates; use Schema; use October\Rain\Database\Updates\Migration; class AddProfilesFieldsToUserTable extends Migration { public function up() { Schema::table('users', function($table) { $table->integer('pinCode')->unsigned(); $table->dateTime('pinCodeDateTime'); $table->integer('phone2')->unsigned()->nullable(); $table->integer('phone3')->unsigned()->nullable(); $table->integer('phone4')->unsigned()->nullable(); }); } public function down() { $table->dropDown([ 'pinCode', 'pinCodeDateTime', 'phone2', 'phone3', 'phone4' ]); } } version.yaml 1.0.1: First version of Profile 1.0.2: - Created profiles table - create_profiles_table.php - add_profiles_fields_to_user_table.php Profile.php (Model) <?php namespace Alomicuba\Profile\Models; use Model; /** * Profile Model */ class Profile extends Model { /** * @var string The database table used by the model. */ public $table = 'alomicuba_profile_profiles'; /** * @var array Relations */ public $belongsTo = [ 'user' => ['RainLab\User\Models\User'] ]; // This method is not need anymore since I'll use the second approach public static function getFromUser($user) { if ($user->profile) return $user->profile; $profile = new static; $profile->user = $user; $profile->save(); $user->profile = $profile; return $profile; } }
しかし、既存のユーザーを編集すると、[プロファイル] タブが表示されず、新しく追加されたフィールドも表示されませんでした。下の画像を参照してください。
これに関するアドバイスはありますか?私は何か見落としてますか?
また、プラグインの拡張についていくつか質問があります。
- 登録フォームに必須フィールドを追加するにはどうすればよいですか?
- アカウント フォームに新しく追加された各フィールドを表示するにはどうすればよいですか?