Browse Source

create CakeRequest in View instead of in CakeEmail

Rachman Chavik 14 years ago
parent
commit
8966f1b324

+ 0 - 6
lib/Cake/Network/Email/CakeEmail.php

@@ -1441,12 +1441,6 @@ class CakeEmail {
 		$View = new $viewClass(null);
 		$View->viewVars = $this->_viewVars;
 		$View->helpers = $this->_helpers;
-		if (!$request = Router::getRequest(true)) {
-			$request = new CakeRequest('/', false);
-			$request->base = '';
-			$request->here = $request->webroot = '/';
-		}
-		$View->request = $request;
 
 		list($templatePlugin, $template) = pluginSplit($this->_template);
 		list($layoutPlugin, $layout) = pluginSplit($this->_layout);

+ 1 - 12
lib/Cake/Test/Case/Network/Email/CakeEmailTest.php

@@ -1044,18 +1044,7 @@ class CakeEmailTest extends CakeTestCase {
 		$this->CakeEmail->template('image');
 		$this->CakeEmail->emailFormat('html');
 
-		$View = new View();
-		$View->request = new CakeRequest('/', true);
-		$View->request->base = '';
-		$View->request->webroot = '/';
-		$View->request->here = '/';
-		$View->Helpers->load('Html');
-
-		$expected = $View->Html->image('image.gif', array(
-			'fullBase' => true, 'alt' => 'cool image',
-			'width' => 100, 'height' => 100,
-			));
-
+		$expected = '<img src="http://localhost/img/image.gif" alt="cool image" width="100" height="100" />';
 		$result = $this->CakeEmail->send();
 		$this->assertContains($expected, $result['message']);
 	}

+ 1 - 1
lib/Cake/Test/Case/Utility/DebuggerTest.php

@@ -324,7 +324,7 @@ object(View) {
 	validationErrors => array()
 	hasRendered => false
 	uuids => array()
-	request => null
+	request => object(CakeRequest) {}
 	response => object(CakeResponse) {}
 	elementCache => 'default'
 	int => (int) 2

+ 5 - 0
lib/Cake/View/View.php

@@ -314,6 +314,11 @@ class View extends Object {
 			}
 			$this->_eventManager = $controller->getEventManager();
 		}
+		if (empty($this->request) && !($this->request = Router::getRequest(true))) {
+			$this->request = new CakeRequest(null, false);
+			$this->request->base = '';
+			$this->request->here = $this->request->webroot = '/';
+		}
 		if (is_object($controller) && isset($controller->response)) {
 			$this->response = $controller->response;
 		} else {