CakePHP ile) (Model :: afterSave mümkün Kontrolörü :: render () kullanıyor?

1 Cevap php

Ben bir kayıt kaydedildikten sonra çalışmak gerekir gibi refactor istiyorum bazı örnek kod var. Kayıt ilk (afterFilter kullanarak) işlenir sonra şu anda çalışıyor. Ne yapar düzeni ile istediğim görünümü işlemek ve bir dosyaya kaydeder.

function afterFilter() {
    parent::afterFilter();
    if($this->params['pass'][0] == 'contact') {
        $surrenderOuput = $this->surrender($this->params['pass'][0]);
        $path = WWW_ROOT . 'cache' . DS . $this->params['pass'][0] . DS . 'index.html';
        $file = new File($path, true);
        $file->write($surrenderOuput);
        $file->close();
    }
}
function surrender($action = null, $layout = null, $file = null) {
	$this->beforeRender();

	$viewClass = $this->view;
	if ($this->view != 'View') {
		if (strpos($viewClass, '.') !== false) {
			list($plugin, $viewClass) = explode('.', $viewClass);
		}
		$viewClass = $viewClass . 'View';
		App::import('View', $this->view);
	}

	$this->Component->beforeRender($this);

	$this->params['models'] = $this->modelNames;

	if (Configure::read() > 2) {
		$this->set('cakeDebug', $this);
	}

	$View =& new $viewClass($this);

	if (!empty($this->modelNames)) {
		$models = array();
		foreach ($this->modelNames as $currentModel) {
			if (isset($this->$currentModel) && is_a($this->$currentModel, 'Model')) {
				$models[] = Inflector::underscore($currentModel);
			}
			$isValidModel = (
				isset($this->$currentModel) && is_a($this->$currentModel, 'Model') &&
				!empty($this->$currentModel->validationErrors)
			);
			if ($isValidModel) {
				$View->validationErrors[Inflector::camelize($currentModel)] =&
					$this->$currentModel->validationErrors;
			}
		}
		$models = array_diff(ClassRegistry::keys(), $models);
		foreach ($models as $currentModel) {
			if (ClassRegistry::isKeySet($currentModel)) {
				$currentObject =& ClassRegistry::getObject($currentModel);
				if (is_a($currentObject, 'Model') && !empty($currentObject->validationErrors)) {
					$View->validationErrors[Inflector::camelize($currentModel)] =&
						$currentObject->validationErrors;
				}
			}
		}
	}

	$this->autoRender = false;
	$output = $View->render($action, $layout, $file);

	return $output;
}

Yani temelde düzen var olan görünümü render ve çıkış olarak dönen ve bir dosyaya kaydetme ediyorum. Harika. Bir modelde benzer bir şey yapmak için herhangi bir yolu var mı?

1 Cevap

Sen denetleyicisi () modelinde sizin afterSave bir üye değişkeni () ayarı ve afterFilter bu değeri kontrol düşünebilirsiniz.