В ExtBase объекты «управляются». Это означает, что каждая транзакция persistence (добавление/удаление/обновление) просто указывается в базовой логике, но пока не выполняется до соответствующего времени (например, завершения обработки запроса). Таким образом, только потому, что вы добавляете объект в репозиторий, это еще не значит, что он еще добавлен. Это происходит, как только вызывается $persistenceManager->persistAll()
, что вам не нужно делать вручную, когда-либо. Дело в том, что ваш объект $page
не будет иметь UID, пока он не будет сохранен, и именно поэтому $page->getUid()
возвращает null. Look here for a great explanation.
Я подозреваю, что вы пытаетесь сделать что-то вне объекта ExtBase/MVC. По крайней мере, в последний раз я получил null
, когда я попытался получить UID объекта, потому что я не работал в рамках соответствующим образом.
Однако, если вы разместите еще какой-нибудь код и дадите нам более полную картину того, чего вы пытаетесь достичь, возможно, мы сможем помочь вам добраться до точки, где у этого объекта есть UID. Например, если вы находитесь в объекте Controller, сообщите нам, какой метод действия вы используете, или если вы находитесь в объекте репозитория, сообщите нам, что вы пытаетесь получить из репозитория, и где/как вы планируете при использовании результатов запроса.
EDIT
Просто угадать здесь, но я предполагаю, что вы выполнение этого кода в некоторых действиях контроллера. Так как после того, как контроллер выполнен вид визуализируется, вы можете просто передать объект страницы с точки зрения:
$this->view->assign('page', $page);
, а затем на ваш взгляд, вы можете использовать объект страницы в ссылке:
<f:link.action action="show" arguments="{page:page}">
See this page object
</f:link.action>
А потом в шоу действия вашего контроллера вы можете показать страницу:
public function showAction(Tx_MyExt_Domain_Model_Page $page) {
// Do whatever you need to show the page in the `Show.html` template
}
Я действительно только гадать здесь. Если вы можете дать нам более полную картину того, что вы пытаетесь сделать, что ваши действия должны делать, и что-то подобное, мы можем ответить на ваш вопрос немного увереннее.
(Я также предполагаю, что ваш объект страницы не является заменой для обычных страниц TYPO3 и что они совершенно разные. Гораздо проще иметь дело с этими страницами TYPO3 через интерфейсный интерфейс, чем на php уровень.)
После того как я создал эту страницу, я хочу, чтобы отправить ссылку на новую страницу пользователя. К сожалению, ссылка не работает atm. – AdON
Прошу прощения за эту ссылку.Это действительно лучший ресурс для понимания структуры ExtBase. [FLOW3] (http://flow3.typo3.org/documentation/guide.html) похож на ExtBase, но немного более современный. Чтение об этом может быть полезно для общих идей в системе MVC/ORM. – peter
О, спасибо за ваши усилия и по этому вопросу;) Я еще не был достаточно точным, чтобы упомянуть, что я хочу отправить ссылку на новую страницу по электронной почте. – AdON