Hey Mario,

On 5 May 2015 at 00:04, mbneto <[email protected]> wrote:

> Ok. Let's try this.
>
> My app handles products which are made of scalar values (like price, name)
> and of details, themselves made of other scalar values (size, weight etc)
> in a one->many relationship
>
> So
>
> Step 1 : action showProduct
> $product = $documentManager->find('Product', $id);
> $this->view->product = $product;
> $_SESSION['product'] = $product;  // This is saving the product so I don't
> have to fetch it again and to guarantee that I will use the same no matter
> if the db changes from now until the end of the process
>

Is this action needed? Why can't you store a "session-safe" version of the
object? ($product->toSerializableProductDTO(), kind-of)


>
> // Displays a form and the product information.  The user decides if he
> wants to use this product. If he decides to do so calls Step 2
>
> Step 2 : action confirm
> $this->view->product = $_SESSION['product'];
> $context->save(session_id, $product);   // This context serializes the
> product object for future use and saves in a persistence medium (db, file,
> redis, memcache). in real life this context would save other objects needed
> as well
>

If you redesign the product form around the DTO, this will also work.


>
> // Display a confirmation page with the details
>
> Step 3: action postback     // At some point we will get called with the
> session_id saved on step 2.
> $id = $_GET['id'];
> $product = $context->restore($id);
>

Here, something like
$productRepository->loadFromSerializableProductDTO($context->restore($id));.
This sort of operation merges data (manually) into the entity.


> $myClass->process($product);
>

Keep on rocking!




Marco Pivetta

http://twitter.com/Ocramius

http://ocramius.github.com/

-- 
You received this message because you are subscribed to the Google Groups 
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to