Guest User

React JS/Laravel Code

a guest
Oct 6th, 2019
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.91 KB | None | 0 0
  1. web.php:
  2.  
  3. <?php
  4.  
  5. Auth::routes();
  6.  
  7. Route::group(['middleware' => ['auth']], function () {
  8. Route::get('/', "HomeController@index")->name('home');
  9. Route::get('/home', "HomeController@index")->name('home');
  10. Route::post('/home', 'PostPicturesController@create')->name('home');
  11. });
  12. ___________________________________________________________________________________________________________________________
  13. PostPictureController.php:
  14.  
  15. <?php
  16.  
  17. namespace App\Http\Controllers;
  18.  
  19. use App\User;
  20. use App\PostPictures;
  21. use Illuminate\Http\Request;
  22.  
  23. class PostPicturesController extends Controller
  24. {
  25. public function create(Request $request, PostPictures $postPicture) {
  26. $uploadPic = $postPicture->user()->postPictures->create([
  27. 'body' => $request->body
  28. ]);
  29.  
  30. return response()->json($postPicture->with('user')->find($uploadPic->id));
  31. }
  32. }
  33. ___________________________________________________________________________________________________________________________
  34. PostPictures.php:
  35.  
  36. <?php
  37.  
  38. namespace App;
  39.  
  40. use Illuminate\Database\Eloquent\Model;
  41.  
  42. class PostPictures extends Model {
  43. protected $fillable = ['body'];
  44.  
  45. public function user() {
  46. return $this->belongsTo(User::class);
  47. }
  48. }
  49.  
  50. ___________________________________________________________________________________________________________________________
  51. import React, {Component} from 'react';
  52. import axios from 'axios';
  53. import Feed from '../components/Feed/Feed';
  54. import Upload from '../components/Upload/Upload';
  55.  
  56. import ImagePreview from './ImagePreview/ImagePreview';
  57.  
  58. class App extends Component {
  59. constructor(props) {
  60. super(props);
  61.  
  62. this.state = {
  63. selectedFile: null,
  64. previewImgURL: '',
  65. imgPrev: false,
  66. success: false,
  67. progress: 0,
  68. imageChosen: false,
  69. pictures: [],
  70. hideForm: true,
  71. };
  72. this.imageUpload = this.imageUpload.bind(this);
  73. this.submitImageAndRedirect = this.submitImageAndRedirect.bind(this);
  74. this.postIsClicked = this.postIsClicked.bind(this);
  75. this.feedView = this.feedView.bind(this);
  76. }
  77.  
  78. imagePreview(newPostImageBool) {
  79. this.setState({imgPrev: newPostImageBool});
  80.  
  81. if (this.state.selectedFile === null) {
  82. alert("can't preview a picture on this because it's empty");
  83. this.setState({imgPrev: false});
  84. }
  85. };
  86.  
  87. closeModal() {
  88. this.setState({imgPrev: false});
  89. };
  90.  
  91. imageUpload(e) {
  92. let reader = new FileReader();
  93. let file = e.target.files[0];
  94.  
  95. reader.onloadend = () => {
  96. this.setState({
  97. selectedFile: file,
  98. previewImgURL: reader.result,
  99. pictures: [reader.result]
  100. }, () => {
  101. console.log(this.state.pictures);
  102. })
  103. };
  104.  
  105. if (file) reader.readAsDataURL(file); // Allows user to preview image uploaded
  106.  
  107. this.setState(() => ({file}));
  108. this.setState({success: true, imageChosen: true});
  109. }
  110.  
  111. submitImageAndRedirect() {
  112. // e.preventDefault();
  113. let picUrl = this.state.previewImgURL;
  114. axios.post('/home', {
  115. body: picUrl
  116. }).then(response => {
  117. // console
  118. console.log(response);
  119. // set state
  120. this.setState({
  121. pictures: [picUrl, response.data]
  122. });
  123. });
  124.  
  125. console.log("submitImageAndRedirect() triggered");
  126. }
  127.  
  128. postIsClicked(e) {
  129. console.log("postIsClicked(e) triggered");
  130.  
  131. if (e.target.value === "Yes") {
  132. this.feedView();
  133. this.submitImageAndRedirect();
  134. console.log(`Yes has been clicked... inside Yes if block`);
  135. } else {
  136. alert("No clicked");
  137. }
  138. }
  139.  
  140. feedView() {
  141. this.setState({hideForm: false}, () => console.log(this.state.hideForm));
  142. }
  143.  
  144. render() {
  145. return (
  146. <div className="feed-wrapper">
  147. {this.state.success ?
  148. <div className="alert alert-success">
  149. <strong>Chosen image is successful!
  150. Now click Preview and make sure that's the one you want to upload!</strong>
  151. </div> : null}
  152.  
  153. {this.state.hideForm ?
  154. <form onSubmit={this.submitImageAndRedirect}>
  155. <div className="inputWrapper">
  156. <input
  157. id="new_post_image"
  158. name="post_image"
  159. className="button is-success is-outlined"
  160. type="file"
  161. style={{display: 'none'}}
  162. onChange={this.imageUpload}
  163. accept="image/*"
  164. />
  165.  
  166. <Upload/>
  167.  
  168. <br/>
  169. {
  170. this.state.imageChosen ?
  171. <div className="uploaded-pics">
  172. <ImagePreview src={this.state.previewImgURL} onClick={this.postIsClicked}/>
  173. </div> : null
  174. }
  175. </div>
  176. </form>
  177. : null
  178. }
  179.  
  180. {!this.state.hideForm ?
  181. this.state.pictures.map(post => {
  182. return <Feed src={post} />
  183. })
  184. :null}
  185. </div>
  186. );
  187. }
  188. }
  189.  
  190. export default App;
  191. ___________________________________________________________________________________________________________________________
Add Comment
Please, Sign In to add comment