سؤال

كل يوم هو يوم جديد مع Symfony ، لكني أحبه! هذا الصباح قمت بتثبيت sfJQueryUIPlugin. لديها القليل من التبعيات ويقبل أنماط Themeroller. ومع ذلك ، فإنه يحتوي على مسألين:

feature_request] لا توجد طريقة لتحديد نطاق السنة. بشكل افتراضي ، يظهر نطاقًا مدته 20 عامًا على مدار العام في القيمة الميدانية. على سبيل المثال. إذا كانت قيمة الحقل هي 1993-01-20 ، فسيكون النطاق من 1983 إلى 2003. ؟؟؟ هل وجد أي شخص وسيلة للخروج ؟؟؟

لا يظهر DatePicker عندما يكون الحقل فارغًا ، وبالتالي لا يظهر أثناء إنشاء سجل جديد. لحل هذا ، حاولت إعداد القيمة الافتراضية في حقل إدخال التاريخ (الذي يظهر الآن كملف text الإدخال) باستخدام $this->setDefault('date_of_birth',date('Y-m-d'));؟؟؟ هل يواجه أي شخص مشكلة Picker هذه الآن أثناء إنشاء سجل جديد ؟؟؟ ؟؟؟ أيضا هل هي الطريقة الصحيحة لضبط القيمة الافتراضية ؟؟؟

شكرا مقدما.

هل كانت مفيدة؟

المحلول

للحصول على منتقي التاريخ في نموذج التسجيل الجديد ، اضطررت إلى ذلك include javascripts في قالب الفهرسة من النموذج الخاص بي (خطأي)

أما بالنسبة لنطاق العام ، فقد قمت بتعديل ملف البرنامج المساعد لتضمين معلمة إضافية

class sfWidgetFormDateJQueryUI extends sfWidgetForm
{
  protected function configure($options = array(), $attributes = array())
  {

    if(sfContext::hasInstance())
     $this->addOption('culture', sfContext::getInstance()->getUser()->getCulture());
    else
     $this->addOption('culture', "en");
    $this->addOption('change_month',  false);
    $this->addOption('change_year',  false);
    $this->addOption('number_of_months', 1);
    $this->addOption('show_button_panel',  false);
    $this->addOption('theme', '/sfJQueryUIPlugin/css/ui-lightness/jquery-ui.css');
    $this->addOption('year_range', '-30:+0');
    parent::configure($options, $attributes);
  }

  public function render($name, $value = null, $attributes = array(), $errors = array())
  {
    $attributes = $this->getAttributes();

    $input = new sfWidgetFormInput(array(), $attributes);

    $html = $input->render($name, $value);

    $id = $input->generateId($name);
    $culture = $this->getOption('culture');
    $cm = $this->getOption("change_month") ? "true" : "false";
    $cy = $this->getOption("change_year") ? "true" : "false";
    $nom = $this->getOption("number_of_months");
    $sbp = $this->getOption("show_button_panel") ? "true" : "false";
    $yrs = $this->getOption("year_range");

    if ($culture!='en')
    {
    $html .= <<<EOHTML
<script type="text/javascript">
    $(function() {
    var params = $.datepicker.regional['$culture'];
    params.changeMonth = $cm;
    params.changeYear = $cy;
    params.numberOfMonths = $nom;
    params.showButtonPanel = $sbp;
    params.yearRange = "$yrs";
    $("#$id").datepicker(params);
    });
</script>
EOHTML;
    }
    else
    {
    $html .= <<<EOHTML
<script type="text/javascript">
    $(function() {
    var params = {
    changeMonth : $cm,
    changeYear : $cy,
    numberOfMonths : $nom,
    showButtonPanel : $sbp,
    yearRange : "$yrs"
        };
    $("#$id").datepicker(params);
    });
</script>
EOHTML;
    }

    return $html;
  }

  public function getStylesheets()
  {...
  }

  public function getJavaScripts()
  {...
  }

}

وإعداد عنصر واجهة المستخدم على النحو التالي:

$this->widgetSchema['date_of_birth']= new sfWidgetFormDateJQueryUI(array("change_month" => true, "change_year" => true, "theme" => "smoothness/jquery-ui-1.8.custom.css", "year_range" => "-30:+0"));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top