reactjs / react-php-v8js

PHP library that renders React components on the server
Other
1.33k stars 127 forks source link

$this->v8->executeString() needs to be echoed in ReactJS.php #2

Open rickmurt opened 9 years ago

rickmurt commented 9 years ago

I did a cURL on the page I set up to verify that PHP had indeed echoed both the markup and the JS, and what I found was that the JS was outputted, but the markup didn't get generated until the page loaded (curl request resulted in <div id="page"></div>). When I inspected the table element, the data was there, so the JS initialized it. If you view source immediately, you'll see an empty #page as well.

Since you have an output buffer in ReactJS::getMarkup(), you have to echo, like so:

ob_start();
*echo* $this->v8->executeString($js);      
return ob_get_clean();

Once I added the echo and did a cURL request, I noticed that the markup was actually there before the JS had a chance to render it.

I'd put in a pull request, but I just wanted to verify that this was intended behavior and I wasn't missing anything.

zpao commented 9 years ago

This repo isn't super active so I'm not sure if you'll get a good response, but cc @stoyan for good measure.

ddon commented 9 years ago

@zpao if this repo is not active, do you know if this lib is still developed? So much noise about React these days, and I think to try it out with PHP, and google search gives this library as a first result.

zpao commented 9 years ago

It's not being used by us and it has basically not been updated since release (https://github.com/reactjs/react-php-v8js/commits/master). There is really not a ton to do here since the feature set is very small. It would be great to have some tests and then we can sort of coast.

allantatter commented 9 years ago

What is the alternative? Not using anything or is it closed source?

zpao commented 9 years ago

We don't use this or anything like it.

carlos22 commented 9 years ago

@rickmurt Thats not true, because the executed JS Code (https://github.com/reactjs/react-php-v8js/blob/master/ReactJS.php#L109) contains a print() function which is a php-v8js special global function that does echo (or print which is basically the same in php) the result. So this should work. See the v8js js api: https://github.com/preillyme/v8js#javascript-api and the examples below.

rahim76 commented 6 years ago

good