Commit afefcd6e by Qiang Xue

support form submission by pjax.

parent 1367a7b5
...@@ -50,10 +50,16 @@ class Pjax extends Widget ...@@ -50,10 +50,16 @@ class Pjax extends Widget
/** /**
* @var string the jQuery selector of the links that should trigger pjax requests. * @var string the jQuery selector of the links that should trigger pjax requests.
* If not set, all links within the enclosed content of Pjax will trigger pjax requests. * If not set, all links within the enclosed content of Pjax will trigger pjax requests.
* Note that the pjax response to a link is a full page, a normal request will be sent again. * Note that if the response to the pjax request is a full page, a normal request will be sent again.
*/ */
public $linkSelector; public $linkSelector;
/** /**
* @var string the jQuery selector of the forms whose submissions should trigger pjax requests.
* If not set, all forms with `data-pjax` attribute within the enclosed content of Pjax will trigger pjax requests.
* Note that if the response to the pjax request is a full page, a normal request will be sent again.
*/
public $formSelector;
/**
* @var boolean whether to enable push state. * @var boolean whether to enable push state.
*/ */
public $enablePushState = true; public $enablePushState = true;
...@@ -148,9 +154,11 @@ class Pjax extends Widget ...@@ -148,9 +154,11 @@ class Pjax extends Widget
$this->clientOptions['timeout'] = $this->timeout; $this->clientOptions['timeout'] = $this->timeout;
$options = Json::encode($this->clientOptions); $options = Json::encode($this->clientOptions);
$linkSelector = Json::encode($this->linkSelector !== null ? $this->linkSelector : '#' . $id . ' a'); $linkSelector = Json::encode($this->linkSelector !== null ? $this->linkSelector : '#' . $id . ' a');
$formSelector = Json::encode($this->formSelector !== null ? $this->formSelector : '#' . $id . ' form[data-pjax]');
$view = $this->getView(); $view = $this->getView();
PjaxAsset::register($view); PjaxAsset::register($view);
$js = "jQuery(document).pjax($linkSelector, \"#$id\", $options);"; $js = "jQuery(document).pjax($linkSelector, \"#$id\", $options);";
$js .= "jQuery(document).on('submit', $formSelector, function (event) {jQuery.pjax.submit(event, '#$id');});";
$view->registerJs($js); $view->registerJs($js);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment