mirror of
https://github.com/silverstripe/silverstripe-cms
synced 2024-10-22 08:05:56 +02:00
Merge pull request #2411 from kinglozzer/virtualpage-definemethods
FIX: VirtualPage missing methods from target page (fixes #2408)
This commit is contained in:
commit
59b9a0d664
@ -489,6 +489,19 @@ class VirtualPage extends Page
|
||||
return $copy && $copy->exists() && $copy->hasField($field);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $method
|
||||
* @return bool
|
||||
*/
|
||||
public function hasMethod($method)
|
||||
{
|
||||
if (parent::hasMethod($method)) {
|
||||
return true;
|
||||
}
|
||||
$copy = $this->CopyContentFrom();
|
||||
return $copy && $copy->exists() && $copy->hasMethod($method);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the "casting helper" (a piece of PHP code that when evaluated creates a casted value object) for a field
|
||||
* on this object.
|
||||
|
@ -669,6 +669,9 @@ class VirtualPageTest extends FunctionalTest
|
||||
{
|
||||
/** @var VirtualPage $virtualPage */
|
||||
$virtualPage = $this->objFromFixture(VirtualPage::class, 'vp4');
|
||||
$this->assertTrue($virtualPage->hasMethod('modelMethod'));
|
||||
$this->assertEquals('hi there', $virtualPage->modelMethod());
|
||||
|
||||
/** @var VirtualPageTest_ClassAController $controller */
|
||||
$controller = ModelAsController::controller_for($virtualPage);
|
||||
$this->assertInstanceOf(VirtualPageTest_ClassAController::class, $controller);
|
||||
|
Loading…
Reference in New Issue
Block a user