mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-17 14:57:23 +08:00
Merge remote branch 'upstream/master' into pgsql-driver
This commit is contained in:
@@ -67,10 +67,20 @@ class Application extends Module
|
||||
* Constructor.
|
||||
* @param array $config name-value pairs that will be used to initialize the object properties.
|
||||
* Note that the configuration must contain both [[id]] and [[basePath]].
|
||||
* @throws InvalidConfigException if either [[id]] or [[basePath]] configuration is missing.
|
||||
*/
|
||||
public function __construct($config = array())
|
||||
{
|
||||
Yii::$app = $this;
|
||||
if (!isset($config['id'])) {
|
||||
throw new InvalidConfigException('The "id" configuration is required.');
|
||||
}
|
||||
if (isset($config['basePath'])) {
|
||||
$this->setBasePath($config['basePath']);
|
||||
unset($config['basePath']);
|
||||
} else {
|
||||
throw new InvalidConfigException('The "basePath" configuration is required.');
|
||||
}
|
||||
|
||||
$this->preInit($config);
|
||||
|
||||
@@ -83,37 +93,24 @@ class Application extends Module
|
||||
/**
|
||||
* Pre-initializes the application.
|
||||
* This method is called at the beginning of the application constructor.
|
||||
* When this method is called, none of the application properties are initialized yet.
|
||||
* The default implementation will initialize a few important properties
|
||||
* that may be referenced during the initialization of the rest of the properties.
|
||||
* @param array $config the application configuration
|
||||
* @throws InvalidConfigException if either [[id]] or [[basePath]] configuration is missing.
|
||||
*/
|
||||
public function preInit($config)
|
||||
public function preInit(&$config)
|
||||
{
|
||||
if (!isset($config['id'])) {
|
||||
throw new InvalidConfigException('The "id" configuration is required.');
|
||||
}
|
||||
if (!isset($config['basePath'])) {
|
||||
throw new InvalidConfigException('The "basePath" configuration is required.');
|
||||
}
|
||||
|
||||
$this->setBasePath($config['basePath']);
|
||||
Yii::setAlias('@app', $this->getBasePath());
|
||||
unset($config['basePath']);
|
||||
|
||||
if (isset($config['vendor'])) {
|
||||
$this->setVendorPath($config['vendor']);
|
||||
if (isset($config['vendorPath'])) {
|
||||
$this->setVendorPath($config['vendorPath']);
|
||||
unset($config['vendorPath']);
|
||||
} else {
|
||||
// set "@vendor"
|
||||
$this->getVendorPath();
|
||||
}
|
||||
Yii::setAlias('@vendor', $this->getVendorPath());
|
||||
|
||||
if (isset($config['runtime'])) {
|
||||
$this->setRuntimePath($config['runtime']);
|
||||
unset($config['runtime']);
|
||||
if (isset($config['runtimePath'])) {
|
||||
$this->setRuntimePath($config['runtimePath']);
|
||||
unset($config['runtimePath']);
|
||||
} else {
|
||||
// set "@runtime"
|
||||
$this->getRuntimePath();
|
||||
}
|
||||
Yii::setAlias('@runtime', $this->getRuntimePath());
|
||||
|
||||
if (isset($config['timeZone'])) {
|
||||
$this->setTimeZone($config['timeZone']);
|
||||
unset($config['timeZone']);
|
||||
@@ -202,7 +199,8 @@ class Application extends Module
|
||||
|
||||
/**
|
||||
* Returns the directory that stores runtime files.
|
||||
* @return string the directory that stores runtime files. Defaults to 'protected/runtime'.
|
||||
* @return string the directory that stores runtime files.
|
||||
* Defaults to the "runtime" subdirectory under [[basePath]].
|
||||
*/
|
||||
public function getRuntimePath()
|
||||
{
|
||||
@@ -215,16 +213,11 @@ class Application extends Module
|
||||
/**
|
||||
* Sets the directory that stores runtime files.
|
||||
* @param string $path the directory that stores runtime files.
|
||||
* @throws InvalidConfigException if the directory does not exist or is not writable
|
||||
*/
|
||||
public function setRuntimePath($path)
|
||||
{
|
||||
$path = Yii::getAlias($path);
|
||||
if (is_dir($path) && is_writable($path)) {
|
||||
$this->_runtimePath = $path;
|
||||
} else {
|
||||
throw new InvalidConfigException("Runtime path must be a directory writable by the Web server process: $path");
|
||||
}
|
||||
$this->_runtimePath = Yii::getAlias($path);
|
||||
Yii::setAlias('@runtime', $this->_runtimePath);
|
||||
}
|
||||
|
||||
private $_vendorPath;
|
||||
@@ -232,7 +225,7 @@ class Application extends Module
|
||||
/**
|
||||
* Returns the directory that stores vendor files.
|
||||
* @return string the directory that stores vendor files.
|
||||
* Defaults to 'vendor' directory under applications [[basePath]].
|
||||
* Defaults to "vendor" directory under [[basePath]].
|
||||
*/
|
||||
public function getVendorPath()
|
||||
{
|
||||
@@ -249,6 +242,7 @@ class Application extends Module
|
||||
public function setVendorPath($path)
|
||||
{
|
||||
$this->_vendorPath = Yii::getAlias($path);
|
||||
Yii::setAlias('@vendor', $this->_vendorPath);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -236,6 +236,9 @@ abstract class Module extends Component
|
||||
$p = realpath($path);
|
||||
if ($p !== false && is_dir($p)) {
|
||||
$this->_basePath = $p;
|
||||
if ($this instanceof Application) {
|
||||
Yii::setAlias('@app', $p);
|
||||
}
|
||||
} else {
|
||||
throw new InvalidParamException("The directory does not exist: $path");
|
||||
}
|
||||
|
||||
@@ -204,14 +204,12 @@ abstract class Target extends Component
|
||||
if ($matched) {
|
||||
foreach ($this->except as $category) {
|
||||
$prefix = rtrim($category, '*');
|
||||
foreach ($messages as $i => $message) {
|
||||
if (strpos($message[2], $prefix) === 0 && ($message[2] === $category || $prefix !== $category)) {
|
||||
$matched = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$matched) {
|
||||
unset($messages[$i]);
|
||||
|
||||
@@ -99,7 +99,7 @@ class AccessRule extends Component
|
||||
if ($this->matchAction($action)
|
||||
&& $this->matchRole($user)
|
||||
&& $this->matchIP($request->getUserIP())
|
||||
&& $this->matchVerb($request->getRequestMethod())
|
||||
&& $this->matchVerb($request->getMethod())
|
||||
&& $this->matchController($action->controller)
|
||||
&& $this->matchCustom($action)
|
||||
) {
|
||||
|
||||
@@ -60,7 +60,7 @@ class HttpCache extends ActionFilter
|
||||
*/
|
||||
public function beforeAction($action)
|
||||
{
|
||||
$verb = Yii::$app->request->getRequestMethod();
|
||||
$verb = Yii::$app->request->getMethod();
|
||||
if ($verb !== 'GET' && $verb !== 'HEAD' || $this->lastModified === null && $this->etagSeed === null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ class Request extends \yii\base\Request
|
||||
/**
|
||||
* @var string|boolean the name of the POST parameter that is used to indicate if a request is a PUT or DELETE
|
||||
* request tunneled through POST. Default to '_method'.
|
||||
* @see getRequestMethod
|
||||
* @see getMethod
|
||||
* @see getRestParams
|
||||
*/
|
||||
public $restVar = '_method';
|
||||
@@ -81,7 +81,7 @@ class Request extends \yii\base\Request
|
||||
* @return string request method, such as GET, POST, HEAD, PUT, DELETE.
|
||||
* The value returned is turned into upper case.
|
||||
*/
|
||||
public function getRequestMethod()
|
||||
public function getMethod()
|
||||
{
|
||||
if (isset($_POST[$this->restVar])) {
|
||||
return strtoupper($_POST[$this->restVar]);
|
||||
@@ -96,7 +96,7 @@ class Request extends \yii\base\Request
|
||||
*/
|
||||
public function getIsPostRequest()
|
||||
{
|
||||
return $this->getRequestMethod() === 'POST';
|
||||
return $this->getMethod() === 'POST';
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -105,7 +105,7 @@ class Request extends \yii\base\Request
|
||||
*/
|
||||
public function getIsDeleteRequest()
|
||||
{
|
||||
return $this->getRequestMethod() === 'DELETE';
|
||||
return $this->getMethod() === 'DELETE';
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -114,7 +114,7 @@ class Request extends \yii\base\Request
|
||||
*/
|
||||
public function getIsPutRequest()
|
||||
{
|
||||
return $this->getRequestMethod() === 'PUT';
|
||||
return $this->getMethod() === 'PUT';
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -141,7 +141,7 @@ class Request extends \yii\base\Request
|
||||
/**
|
||||
* Returns the request parameters for the RESTful request.
|
||||
* @return array the RESTful request parameters
|
||||
* @see getRequestMethod
|
||||
* @see getMethod
|
||||
*/
|
||||
public function getRestParams()
|
||||
{
|
||||
@@ -772,7 +772,7 @@ class Request extends \yii\base\Request
|
||||
if (!$this->enableCsrfValidation) {
|
||||
return;
|
||||
}
|
||||
$method = $this->getRequestMethod();
|
||||
$method = $this->getMethod();
|
||||
if ($method === 'POST' || $method === 'PUT' || $method === 'DELETE') {
|
||||
$cookies = $this->getCookies();
|
||||
switch ($method) {
|
||||
|
||||
@@ -171,7 +171,7 @@ class UrlRule extends Object
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($this->verb !== null && !in_array($request->getRequestMethod(), $this->verb, true)) {
|
||||
if ($this->verb !== null && !in_array($request->getMethod(), $this->verb, true)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ class VerbFilter extends Behavior
|
||||
{
|
||||
$action = $event->action->id;
|
||||
if (isset($this->actions[$action])) {
|
||||
$verb = Yii::$app->getRequest()->getRequestMethod();
|
||||
$verb = Yii::$app->getRequest()->getMethod();
|
||||
$allowed = array_map('strtoupper', $this->actions[$action]);
|
||||
if (!in_array($verb, $allowed)) {
|
||||
$event->isValid = false;
|
||||
|
||||
Reference in New Issue
Block a user