実装に問題がある可能性のあることはたくさんありますが、コードを見ずに言うことは不可能です。それにもかかわらず、私は試してみるつもりです。そのチュートリアルは私には問題ないように見えますが、コードを実行していないため、確信が持てません。私はあなたが何かを逃したかもしれないと思う傾向があります。グリッドとタブでの作業は、最良の場合は特にデリケートな場合があります。
それは2つのことの1つであるように私には聞こえます。どちらかのように聞こえます
A)モデルデータがレジストリに保存されていません。これは、問題がコードのこの部分にあることを意味します。
<?php
class Pfay_Test_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action
{
...
public function editAction()
{
$testId = $this->getRequest()->getParam('id');
$testModel = Mage::getModel('test/test')->load($testId);
if ($testModel->getId() || $testId == 0)
{
Mage::register('test_data', $testModel);
}
コードのこのセクションが行うことは、選択したモデルをMagentoのレジストリに「登録」することです。コードの後半で、次のように呼び出されることがわかります。
$form->setValues(Mage::registry('test_data')->getData());
フォームフィールドに入力します。
上記のコードに次のようなコマンドを入れてみてください。
var_dump($testId);
die();
また
print_r($testModel);
die();
そしてそれを再び実行します。$ testIdが設定されていますか?$ testModelがロードされていますか?レジストリのifステートメントはロードされていますか?そうでない場合は、問題をさかのぼって追跡します。
またはそれはまたかもしれません
B)列名が間違っているため、フォームにデータが事前入力されていません。
コードが言うところを見てください:
<?php
class Pfay_Test_Block_Adminhtml_Test_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form
{
protected function _prepareForm()
{
$form = new Varien_Data_Form();
$this->setForm($form);
$fieldset = $form->addFieldset('test_form', array('legend'=>'ref information'));
$fieldset->addField('nom', 'text',
array(
'label' => 'Nom',
'class' => 'required-entry',
'required' => true,
'name' => 'nom',
)
);
「nom」が実際にモデルの属性名の1つであることを確認する必要があります。テストモデルを作成したときに属性名を変更しましたが、ここで変更するのを忘れましたか?それに応じてこれらの値を変更してください。
これが問題の解決に役立つことを願っています。幸運を!