কীভাবে আমি পিএইচপি থেকে গতিশীলভাবে কোনও ফর্মের এক্সএমএল তৈরি করতে পারি?


10

আইটেমগুলির ব্যবহারকারীর তালিকার উপর ভিত্তি করে আমার একটি পৃষ্ঠা / ফর্ম উত্পন্ন করার প্রয়োজন রয়েছে। যেমনটি হিসাবে, ব্যবহারকারী আইটেমের একটি পাঠ্য বিবরণ রয়েছে এমন আইটেমের একটি তালিকা নির্দিষ্ট করতে পারে এবং এটি ক্ষেত্রের textবা listপ্রকারের whether ( যে চেক আউট করা যেতে পারে এমন সরঞ্জামগুলির একটি তালিকা এবং চেক করার জন্য আইটেমের তালিকার সরঞ্জামের ধরণের দ্বারা আলাদা হয় gine কিছু অংশীদারি আইটেম অবশ্যই রয়েছে, তবে সেগুলি সরঞ্জামের ধরন, মডেল ইত্যাদি থেকে আলাদা হয় ) gine সুতরাং, ফোল্ডারটি থেকে কেবলমাত্র বিদ্যমান এক্সএমএল ফাইলটি লোড করা models\forms\এবং এটির সাথে চালানোর পরিবর্তে ফ্লাইতে একটি নতুন ফিল্ডসেট এবং নতুন ক্ষেত্রগুলির একটি সিরিজ যুক্ত করা যেতে পারে।

যদি তাই,

  1. কীভাবে তা সম্পাদিত হয়?
  2. এটি করার সঠিক জায়গাটি কোথায় হবে যাতে এমভিসি এটির সাথে "স্ট্যান্ডার্ড" ফর্মটি এক্সএমএল এর মতো আচরণ করে?
  3. ভিউতে প্রদর্শনের জন্য সেই ক্ষেত্রগুলির একটি তালিকা পুনরুদ্ধার করতে কীভাবে সেরা?

মডেল \ myform.php

$form = $this->loadForm('com_mycomponent.myform', 'myform', array('control' => 'jform', 'load_data' => $loadData));

কন্ট্রোলার / myform.php

// Get the user data.
$data = JFactory::getApplication()->input->get('jform', array(), 'array');

// Validate the posted data.
$form = $model->getForm();
if (!$form) {
    JError::raiseError(500, $model->getError());
    return false;
}
...
// Validate the posted data.
$data = $model->validate($form, $data);
...
// Attempt to save the data.
$return = $model->save($data);

উত্তর:


4

আমি কাজ ছিল jFormও পদ্ধতি setField()এবং getFieldset()সেটে এবং ক্ষেত্র পুনরুদ্ধার, কিন্তু জুমলা ত্রুটি নিক্ষেপ করা হয়। একটি listজুমলা যুক্ত করার চেষ্টা করার সময় আমি যোগ করা এবং না হওয়া পর্যন্ত এক্সএমএলকে পার্স করতে পারিনি । ( এগুলি কী / কেন প্রয়োজনীয় তা আমি নিশ্চিত নই, তবে তাদের সাথে নীচের কোডটি কাজ করে )।option_on="Yes"option_off="Yes"

মডেল \ myform.php

 public function getForm($data = array(), $loadData = true)
{
    // Get the form.
    $form = $this->loadForm('com_mycomponent.mymodel', 'myform', array('control' => 'jform', 'load_data' => $loadData));
    if (empty($form)) {
        return false;
    }
    $element = new SimpleXMLElement('<fieldset name="myFieldset">
        <field name="myfield1" type="list"
        label="My List"
        default="2"
        option_on="Yes"
        option_off="Yes">
        <option value="1">Low</option>
        <option value="2">Normal</option>
        <option value="3">High</option>
        </field>
        <field name="myfield2" type="text" label="My field 1" class="inputbox" size="30" />
        <field name="myfield3" type="text" label="My field 2" class="inputbox" size="30" />
    </fieldset>');
    $form->setField($element);
    return $form;
}

মতামত / myview / tmpl / default.php

$this->form->getFieldset('myFieldset'), true)
// Loop through these results and display them accordingly
$myFieldset = $this->form->getFieldset('myFieldset');
if(count($myFieldset)){
    foreach($myFieldset as $field) {
        $field_name = $field->getAttribute('name');
        echo $this->form->getLabel($field_name);
        echo $this->form->getInput($field_name);
    }

}

কন্ট্রোলার / myview.php

// Get the user data.
$data = JFactory::getApplication()->input->get('jform', array(), 'array');
/* $data DOES contain my input fields*/
// The model/table doesn't contain columns for my custom fields, so the data to be saved has to be manipulated here to "go somewhere permanent".

// Validate the posted data.
$form = $model->getForm();
/* $form DOES contain my input fields*/
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.