merging fixes into trunk from [869]

git-svn-id: https://svn.cakephp.org/repo/trunk/cake@870 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
phpnut 2005-09-17 12:37:05 +00:00
parent 29a1ee9043
commit 00aa3c66d2
9 changed files with 137 additions and 75 deletions

View file

@ -1,7 +1,9 @@
<h1>Missing action</h1>
<?php $controller = Inflector::camelize($this->name)."Controller"; ?>
<p class="error">You are seeing this error because the action <em><?=$this->missingAction;?></em>
is not defined in controller <em><?=Inflector::camelize($this->name);?></em>
<h1>Missing Method in <?php echo $controller;?></h1>
<p class="error">You are seeing this error because the action <em><?php echo $this->controller->missingAction;?></em>
is not defined in controller <em><?php echo $controller;?></em>
</p>
@ -10,18 +12,29 @@
view file, a user-customizable error page for handling invalid action dispatches.</span>
</p>
<p>
<strong>Error</strong>: Unable to execute action <em><?=$this->missingAction;?></em> on
<em><?=Inflector::camelize($this->name);?></em>
<strong>Fatal</strong>: Create Method:
</p>
<p>
<?php echo "<pre>&lt;?php\n\nclass " . $controller ." extends AppController {\n
function ".$this->controller->missingAction."()
{
}
}\n?&gt;</pre>"; ?>
in file : <?php echo "app".DS."controllers".DS.Inflector::underscore($controller).".php"; ?>
</p>
<?if (DEBUG>1):?>
<p>
<strong>Error</strong>: Unable to execute action <em><?php echo $this->controller->missingAction;?></em> in
<em><?php echo $controller;?></em>
</p>
<?php if (DEBUG>1):?>
<h2>Controller dump:</h2>
<pre>
<?
<?php
unset($this->db);
print_r($this);
?>
</pre>
<?endif?>
<?php endif?>

View file

@ -1,6 +1,6 @@
<h1>Missing controller</h1>
<p class="error">You are seeing this error because controller <em><?=$this->missingController;?></em>
<?php $missing = $this->controller->missingController; ?>
<p class="error">You are seeing this error because controller <em><?php echo $missing;?></em>
could not be found.
</p>
@ -10,15 +10,21 @@ view file, a user-customizable error page for handling invalid controller dispat
</p>
<p>
<strong>Fatal</strong>: Unable to load controller <em><?=$this->missingController;?></em>
<strong>Fatal</strong>: Unable to load controller <em><?php echo $missing;?></em>
</p>
<?if (DEBUG>1):?>
<p>
<strong>Fatal</strong>: Create Class:
</p>
<p>
<?php echo "<pre>&lt;?php\n\nclass " . $missing ." extends AppController {\n}\n\n?&gt;</pre>"; ?>
in file : <?php echo "app".DS."controllers".DS.Inflector::underscore($missing).".php"; ?>
</p>
<?php if (DEBUG>1):?>
<h2>Controller dump:</h2>
<pre>
<?
<?php
unset($this->db);
print_r($this);
?>
</pre>
<?endif?>
<?php endif?>

View file

@ -1,6 +1,6 @@
<h1>Scaffold Requires a Database Connection</h1>
<h1>Requires a Database Connection</h1>
<p class="error">Missing Database Connection
<p class="error">Missing Database Connection: Model <?php echo $this->controller->missingConnection;?> requires a database connection
</p>
<p>

View file

@ -0,0 +1,19 @@
<h1>Scaffold Requires a Database Connection</h1>
<p class="error">Missing Database Connection: Scaffold Does not work without a database connection
</p>
<p>
<span class="notice"><strong>Notice:</strong> this error is being rendered by the <code>app/views/errors/missing_database.thtml</code>
view file, a user-customizable error page for handling errors within CakePHP.</span>
</p>
<?if (DEBUG>1):?>
<h2>Controller dump:</h2>
<pre>
<?
unset($this->db);
print_r($this);
?>
</pre>
<?endif?>

View file

@ -0,0 +1,8 @@
<?php $missing = $this->controller->missingTable;?>
<h1>Missing Database Table</h1>
<p class="error">No Database table for model <?php echo $missing;?> (expected "<? echo $this->controller->missingTableName;?>"), create it first.
</p>
<p>
<span class="notice"><strong>Notice:</strong> this error is being rendered by the <code>app/views/errors/missing_table.thtml</code>
view file, a user-customizable error page.</span>
</p>

View file

@ -359,42 +359,59 @@ class Controller extends Object
return $view->render($action, $layout, $file);
}
/**
* Enter description here...
*
*/
function missingController()
{
//We are simulating action call below, this is not a filename!
$this->render('../errors/missingController');
}
/**
* Renders the Missing Controller web page.
*
*/
function missingController()
{
$this->pageTitle = 'Missing Controller';
$this->render('../errors/missingController');
}
/**
* Enter description here...
*
*/
function missingAction()
{
//We are simulating action call below, this is not a filename!
$this->render('../errors/missingAction');
}
/**
* Enter description here...
*
*/
function missingView()
{
//We are simulating action call below, this is not a filename!
$this->render('../errors/missingView');
}
/**
* Renders the Missing Action web page.
*
*/
function missingAction()
{
$this->pageTitle = 'Missing Method in Controller';
$this->render('../errors/missingAction');
}
/**
* Renders the Missing Database web page.
*
*/
function missingDatabase()
{
$this->pageTitle = 'Scaffold Missing Database Connection';
//We are simulating action call below, this is not a filename!
$this->render('../errors/missingScaffolddb');
}
/**
* Renders the Missing Table web page.
*
*/
function missingTable($table_name)
{
$this->missingTableName = $table_name;
$this->pageTitle = 'Missing Database Table';
//We are simulating action call below, this is not a filename!
$this->render('../errors/missingTable');
}
/**
* Renders the Missing Table web page.
*
*/
function missingConnection()
{
$this->pageTitle = 'Missing Database Connection';
//We are simulating action call below, this is not a filename!
$this->render('../errors/missingDatabase');
}
// /**
// * Displays an error page to the user. Uses layouts/error.html to render the page.
// *

View file

@ -112,6 +112,7 @@ class Dispatcher extends Object
$ctrlClass = 'AppController';
$controller = new $ctrlClass($this);
$params['action'] = 'missingController';
$params['controller'] = Inflector::camelize($params['controller']."Controller");
$controller->missingController = $params['controller'];
}
else
@ -415,7 +416,8 @@ class Dispatcher extends Object
}
else
{
$this->errorUnknownAction($url, get_class($controller_class), $params['action']);
$controller_class->missingAction = $params['action'];
call_user_func_array(array(&$controller_class, 'missingAction'), null);
}
exit;
}

View file

@ -216,7 +216,11 @@ class Model extends Object
else
{
$dboFactory = DboFactory::getInstance();
$this->db =& $dboFactory ;
$this->db =& $dboFactory ;
if(empty($this->db))
{
$this->_throwMissingConnection();
}
}
@ -754,7 +758,7 @@ class Model extends Object
{
if (!in_array(strtolower($table_name), $this->db->tables()))
{
trigger_error (sprintf(ERROR_NO_MODEL_TABLE, get_class($this), $table_name), E_USER_ERROR);
$this->_throwMissingModel($table_name);
die();
}
else
@ -924,7 +928,7 @@ class Model extends Object
*/
function saveField($name, $value)
{
return Model::save(array($name=>$value), false);
return Model::save(array($this->table=>array($name=>$value)), false);
}
/**
@ -1610,6 +1614,22 @@ class Model extends Object
{
return $this->db->lastInsertId($this->table, 'id');
}
function _throwMissingTable($table_name)
{
$error = new AppController();
$error->missingTable = get_class($this);
call_user_func_array(array(&$error, 'missingTable'), $table_name);
exit;
}
function _throwMissingConnection()
{
$error = new AppController();
$error->missingConnection = get_class($this);
call_user_func_array(array(&$error, 'missingConnection'), null);
exit;
}
}
?>

View file

@ -431,29 +431,6 @@ class View extends Object
print ($this->_render(VIEWS.'layouts/error.thtml', array('code'=>$code,'name'=>$name,'message'=>$message)));
}
/**
* Renders the Missing Controller web page.
*
*/
function missingController()
{
//We are simulating action call below, this is not a filename!
$this->missingController = $this->name;
$this->render('../errors/missingController');
}
/**
* Renders the Missing Action web page.
*
*/
function missingAction()
{
//We are simulating action call below, this is not a filename!
$this->missingAction = $this->name;
$this->render('../errors/missingAction');
}
/**
* Renders the Missing View web page.
*