Skip to content

Commit

Permalink
Adding the ability to set $displayField from bake. Refactoring ModelT…
Browse files Browse the repository at this point in the history
…ask::bake() Fixes #4438.
  • Loading branch information
markstory committed Jul 9, 2009
1 parent d671056 commit 41eecda
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 21 deletions.
37 changes: 20 additions & 17 deletions cake/console/libs/tasks/model.php
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -245,7 +245,9 @@ function __interactive() {
$looksGood = $this->in(__('Look okay?', true), array('y','n'), 'y'); $looksGood = $this->in(__('Look okay?', true), array('y','n'), 'y');


if (strtolower($looksGood) == 'y') { if (strtolower($looksGood) == 'y') {
if ($this->bake($currentModelName, $associations, $validate, $primaryKey, $useTable, $this->connection)) { $vars = compact('associations', 'validate', 'primaryKey', 'useTable', 'displayField');
$vars['useDbConfig'] = $this->connection;
if ($this->bake($currentModelName, $vars)) {
if ($this->_checkUnitTest()) { if ($this->_checkUnitTest()) {
$this->bakeFixture($currentModelName, $useTable); $this->bakeFixture($currentModelName, $useTable);
$this->bakeTest($currentModelName, $useTable, $associations); $this->bakeTest($currentModelName, $useTable, $associations);
Expand Down Expand Up @@ -702,27 +704,28 @@ function _generatePossibleKeys() {
* Assembles and writes a Model file. * Assembles and writes a Model file.
* *
* @param mixed $name Model name or object * @param mixed $name Model name or object
* @param mixed $associations if array and $name is not an object assume Model associations array otherwise boolean interactive * @param mixed $data if array and $name is not an object assume bake data, otherwise boolean.
* @param array $validate Validation rules
* @param string $primaryKey Primary key to use
* @param string $useTable Table to use
* @param string $useDbConfig Database configuration setting to use
* @access private * @access private
*/ */
function bake($name, $associations = array(), $validate = array(), $primaryKey = 'id', $useTable = null, $useDbConfig = 'default') { function bake($name, $data = array()) {

if (is_object($name)) { if (is_object($name)) {
if (!is_array($associations)) { if ($data == false) {
$associations = $this->doAssociations($name, $associations); $data = $associations = array();
$validate = $this->doValidation($name); $data['associations'] = $this->doAssociations($name, $associations);
} $data['validate'] = $this->doValidation($name);
$primaryKey = $name->primaryKey; }
$useTable = $name->table; $data['primaryKey'] = $name->primaryKey;
$useDbConfig = $name->useDbConfig; $data['useTable'] = $name->table;
$name = $name->name; $data['useDbConfig'] = $name->useDbConfig;
$data['name'] = $name = $name->name;
} else {
$data['name'] = $name;
} }
$defaults = array('associations' => array(), 'validate' => array(), 'primaryKey' => 'id',
'useTable' => null, 'useDbConfig' => 'default', 'displayField' => null);
$data = array_merge($defaults, $data);


$this->Template->set(compact('name', 'useDbConfig', 'associations', 'validate', 'primaryKey', 'useTable')); $this->Template->set($data);
$this->Template->set('plugin', Inflector::camelize($this->plugin)); $this->Template->set('plugin', Inflector::camelize($this->plugin));
$out = $this->Template->generate('classes', 'model'); $out = $this->Template->generate('classes', 'model');


Expand Down
3 changes: 3 additions & 0 deletions cake/console/libs/templates/default/classes/model.ctp
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ endif;
if ($primaryKey !== 'id'): ?> if ($primaryKey !== 'id'): ?>
var $primaryKey = '<?php echo $primaryKey; ?>'; var $primaryKey = '<?php echo $primaryKey; ?>';
<?php endif; <?php endif;
if ($displayField): ?>
var $displayField = '<?php echo $displayField; ?>';
<?php endif;


if (!empty($validate)): if (!empty($validate)):
echo "\tvar \$validate = array(\n"; echo "\tvar \$validate = array(\n";
Expand Down
7 changes: 3 additions & 4 deletions cake/tests/cases/console/libs/tasks/model.test.php
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -564,7 +564,7 @@ function testBakeValidation() {
'time' => 'time' 'time' => 'time'
) )
); );
$result = $this->Task->bake('Article', array(), $validate); $result = $this->Task->bake('Article', compact('validate'));
$this->assertPattern('/class Article extends AppModel \{/', $result); $this->assertPattern('/class Article extends AppModel \{/', $result);
$this->assertPattern('/\$name \= \'Article\'/', $result); $this->assertPattern('/\$name \= \'Article\'/', $result);
$this->assertPattern('/\$validate \= array\(/', $result); $this->assertPattern('/\$validate \= array\(/', $result);
Expand Down Expand Up @@ -615,7 +615,7 @@ function testBakeRelations() {
), ),
) )
); );
$result = $this->Task->bake('Article', $associations, array()); $result = $this->Task->bake('Article', compact('associations'));
$this->assertPattern('/\$hasAndBelongsToMany \= array\(/', $result); $this->assertPattern('/\$hasAndBelongsToMany \= array\(/', $result);
$this->assertPattern('/\$hasMany \= array\(/', $result); $this->assertPattern('/\$hasMany \= array\(/', $result);
$this->assertPattern('/\$belongsTo \= array\(/', $result); $this->assertPattern('/\$belongsTo \= array\(/', $result);
Expand All @@ -642,7 +642,7 @@ function testBakeWithPlugin() {


$path = APP . 'plugins' . DS . 'controller_test' . DS . 'models' . DS . 'article.php'; $path = APP . 'plugins' . DS . 'controller_test' . DS . 'models' . DS . 'article.php';
$this->Task->expectAt(1, 'createFile', array( $this->Task->expectAt(1, 'createFile', array(
$path, new PatternExpectation('/Article extends ControllerTestAppModel/'))); $path, new PatternExpectation('/Article extends ControllerTestAppModel/')));
$this->Task->bake('Article', array(), array()); $this->Task->bake('Article', array(), array());
} }


Expand Down Expand Up @@ -700,7 +700,6 @@ function testExecuteIntoInteractive() {
$this->Task->path = '/my/path/'; $this->Task->path = '/my/path/';


$this->Task->setReturnValueAt(0, 'in', '1'); //choose article $this->Task->setReturnValueAt(0, 'in', '1'); //choose article
// $this->Task->setReturnValueAt(2, 'in', 'n'); //no validation
$this->Task->setReturnValueAt(1, 'in', 'n'); //no validation $this->Task->setReturnValueAt(1, 'in', 'n'); //no validation
$this->Task->setReturnValueAt(2, 'in', 'y'); //yes to associations $this->Task->setReturnValueAt(2, 'in', 'y'); //yes to associations
$this->Task->setReturnValueAt(3, 'in', 'y'); //yes to comment relation $this->Task->setReturnValueAt(3, 'in', 'y'); //yes to comment relation
Expand Down

0 comments on commit 41eecda

Please sign in to comment.