private function compileAnonymousChildren(array $_anonymous_children, \Symforce\AdminBundle\Compiler\Generator\PhpWriter $twig_writer) { foreach ($_anonymous_children as $child_admin_name => $child_properties) { $child_admin = $this->admin_object->generator->getAdminByName($child_admin_name); $twig_writer->writeln('{# if ' . sprintf('sf_auth("%s", "list")', $child_admin->name) . ' #}')->indent()->writeln('{% ' . sprintf('import "%s" as child_macro', $child_admin->_final_template) . ' %}'); foreach ($child_properties as $child_property) { $macro_name = 'admin_parent_' . $child_property; $twig_writer->writeln('{% ' . sprintf('if twig_macro_exists(child_macro, "%s") ', $macro_name) . ' %}')->writeln('{% set view_property_count = view_property_count + 1 %}')->writeln('<div class="form-group">')->indent()->writeln('<div class="control-label col-xs-3">')->indent()->writeln('{% ' . sprintf('if twig_macro_exists(child_macro, "%s_label") ', $macro_name) . ' %}')->indent()->writeln('{{ ' . sprintf('child_macro.%s_label(admin)', $macro_name) . '}}')->outdent()->writeln('{% else %}')->indent()->writeln($child_admin->label->getTwigCode())->outdent()->writeln('{% endif %}')->outdent()->writeln('</div>')->writeln('<div class="control-value col-xs-9">')->writeln('<td>')->indent()->writeln('{{ ' . sprintf('child_macro.%s( sf_admin_class(%s), admin, _object)', $macro_name, var_export($child_admin->class_name, 1)) . '}}')->outdent()->writeln('</td>')->writeln('</div>')->outdent()->writeln('</div>')->writeln('{% endif %}'); } $twig_writer->outdent()->writeln('{# endif #}'); } }
public function generateRouteGenerator(\Symforce\AdminBundle\Compiler\Generator\PhpWriter $generator, $use_object, $is_first = false) { $admin_name = $this->admin->getName(); $route_parent = $this->admin->getRouteParent(); if ($route_parent) { if ($is_first) { $generator->writeln(sprintf('$%s = $loader->getAdminByClass("%s");', $admin_name, $this->admin->getClassName())); $generator->writeln(sprintf('$_sf_admin_route_parameters = $%s->getRouteParameters();', $admin_name)); } $route_parent_name = $route_parent->getName(); $parent_property = $this->admin->getRouteParentProperty(); $generator->writeln(sprintf('if( !isset($options["%s_id"] )) {', $route_parent_name))->indent(); if ($use_object) { $generator->writeln(sprintf('$%s_object = $%s_object ? $accessor->getValue($%s_object, "%s") : null ;', $route_parent_name, $admin_name, $admin_name, $parent_property))->writeln(sprintf('if( $%s_object ) {', $route_parent_name))->indent()->writeln(sprintf('$options["%s_id"] = $accessor->getValue($%s_object, "%s") ;', $route_parent_name, $route_parent_name, $route_parent->getPropertyIdName()))->outdent()->writeln(sprintf('} else if( isset($_sf_admin_route_parameters["%s_id"] )) {', $route_parent_name))->indent()->writeln(sprintf('$options["%s_id"] = $_sf_admin_route_parameters["%s_id"] ;', $route_parent_name, $route_parent_name))->outdent()->writeln('} else {')->indent()->writeln(sprintf(' $options["%s_id"] = $loader->getAdminByClass("%s")->getRouteObjectId() ;', $route_parent_name, $route_parent->getClassName()))->outdent()->writeln('}'); } else { $generator->writeln(sprintf('if( isset($_sf_admin_route_parameters["%s_id"] )) {', $route_parent_name))->indent()->writeln(sprintf(' $options["%s_id"] = $_sf_admin_route_parameters["%s_id"] ;', $route_parent_name, $route_parent_name))->outdent()->writeln('} else {')->indent()->writeln(sprintf(' $options["%s_id"] = $loader->getAdminByClass("%s")->getRouteObjectId() ;', $route_parent_name, $route_parent->getClassName()))->outdent()->writeln('} '); } $generator->outdent()->writeln('}'); $route_parent_generator = $this->loader->getAdminRouteGenerator($route_parent_name); $route_parent_generator->generateRouteGenerator($generator, $use_object); } }